2015-10-26 69 views
0

我正在使用句柄来定义一些JavaScript变量,这些变量使用我从API中提取的信息。就像这样:Can Handlebars可以将javascript变量设置为null吗?

var userState = {{user.user_state.value}}; 

这通常伟大的工程,除非user.user_state.valuenull,在这种情况下,它被编译如下:

var userStateNow = ; 

这是使我写崩溃的应用程序。我试过使用try/catch,但它没有帮助。任何其他想法如何使这项工作?

+3

使用Handlerbars生成JavaScript源代码似乎非常尴尬... –

+0

...但我不完全确定为什么。我的意思是,这是一个模板工具。有时候,你需要用模板生成代码。所以,嘿。 :-) –

+0

如果您从API获得的信息是否有任何理由无法在JavaScript代码中提取? – Harangue

回答

1

你可以注册自己的助手,做一个明确的null检查:

Handlebars.registerHelper('nullsafe', function(value) { 
    return value === null ? "null" : value; 
}); 

然后

var userState = {{nullsafe user.user_state.value}}; 

但我的猜测是,只会将这一问题再度一级。例如,如果值是字符串"foo",该怎么办?您的结果将是

var userState = foo; 

var userState = "foo"; 

你可以使用JSON.stringify输出值,将永远是有效的JavaScript值:

Handlebars.registerHelper('json', function(value) { 
    return JSON.stringify(value); 
}); 

然后

var userState = {{json user.user_state.value}}; 

临屋t会处理null,我的字符串示例以及其他一些情况;但不是undefined。我们可以调整它:

Handlebars.registerHelper('jsout', function(value) { 
    return value === undefined ? "undefined" : JSON.stringify(value); 
}); 

然后

var userState = {{jsout user.user_state.value}}; 

,以此类推,直到你有一些供你使用的情况下工作。

相关问题