我正在使用把手来定义一些JavaScript变量,使用我从API中提取的信息。像这样:
var userState = {{user.user_state.value}};
除非user.user_state.value
为null
,否则这通常很有效,在这种情况下,它会像这样编译:
var userStateNow = ;
这使我正在写的应用程序崩溃。我尝试过使用try
/ catch
,但没有用。任何其他想法如何使这项工作?
答案 0 :(得分: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}};
这会处理null
,我的字符串示例以及其他几个案例;但不是undefined
。我们可以调整它:
Handlebars.registerHelper('jsout', function(value) {
return value === undefined ? "undefined" : JSON.stringify(value);
});
然后
var userState = {{jsout user.user_state.value}};
依此类推,直到你有适合你的用例的东西。