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

Can Handlebars set a javascript variable to null?

本文关键字:null 设置 变量 javascript Handlebars      更新时间:2023-09-26

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

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

这通常工作得很好,除非user.user_state.valuenull,在这种情况下,它被编译成这样:

var userStateNow = ;

这会使我正在编写的应用程序崩溃。我试过使用try/catch,但没有帮助。还有其他办法吗?

您可以注册您自己的帮助器来执行显式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}};

等等,直到你有适合你的用例的东西