Handlebars可以将javascript变量设置为null吗?

时间:2015-10-26 15:57:14

标签: javascript handlebars.js

我正在使用把手来定义一些JavaScript变量,使用我从API中提取的信息。像这样:

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

除非user.user_state.valuenull,否则这通常很有效,在这种情况下,它会像这样编译:

var userStateNow = ;

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

1 个答案:

答案 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}};

依此类推,直到你有适合你的用例的东西。