jsRender可选模型属性

时间:2013-03-20 13:27:56

标签: javascript jquery jquery-plugins jsrender

我希望我的jsRender模板可选择包含“options”属性,以便在未包含属性时提供可选的后备;如果包含“options”属性,则具体呈现一个元素;如果不包含,则呈现另一个元素。如果传入的模型包含有问题的属性,一切正常,但即使{{if typeof ~options.someOption !== 'undefined'}}给我Error: Cannot read property 'someOption' of undefined.

有没人处理过这件事?如果是这样,你如何处理传递的模型的属性?不存在?

编辑:这个问题实际上是关于如何处理模型的缺失属性。给定具有属性A和B的模型,如果模型中缺少属性B但是模板中引用了属性B,我该如何防止错误消息并优雅地处理它?<​​/ p>

1 个答案:

答案 0 :(得分:0)

您可以利用以下事实:在Javascript中,不存在的事物评估为“undefined”,在条件语句中等于false,并在您尝试访问的包含对象和属性周围包装“if”。所以,要使用你的例子,你会像

一样

{{if options}}{{if options.someOption}}{{:options.someOption}}{{/if}}{{/if}}

如果两个选项和someOption都存在,则模板将使用options.SomeOption进行渲染。否则它什么都不做。

相关问题