你可以注册自己的助手,做一个明确的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}};
,以此类推,直到你有一些供你使用的情况下工作。
使用Handlerbars生成JavaScript源代码似乎非常尴尬... –
...但我不完全确定为什么。我的意思是,这是一个模板工具。有时候,你需要用模板生成代码。所以,嘿。 :-) –
如果您从API获得的信息是否有任何理由无法在JavaScript代码中提取? – Harangue