我希望我的jsRender模板可选择包含“options”属性,以便在未包含属性时提供可选的后备;如果包含“options”属性,则具体呈现一个元素;如果不包含,则呈现另一个元素。如果传入的模型包含有问题的属性,一切正常,但即使{{if typeof ~options.someOption !== 'undefined'}}
给我Error: Cannot read property 'someOption' of undefined.
有没人处理过这件事?如果是这样,你如何处理传递的模型的属性?不存在?
编辑:这个问题实际上是关于如何处理模型的缺失属性。给定具有属性A和B的模型,如果模型中缺少属性B但是模板中引用了属性B,我该如何防止错误消息并优雅地处理它?</ p>
答案 0 :(得分:0)
您可以利用以下事实:在Javascript中,不存在的事物评估为“undefined”,在条件语句中等于false,并在您尝试访问的包含对象和属性周围包装“if”。所以,要使用你的例子,你会像
一样 {{if options}}{{if options.someOption}}{{:options.someOption}}{{/if}}{{/if}}
如果两个选项和someOption都存在,则模板将使用options.SomeOption进行渲染。否则它什么都不做。