【发布时间】:2013-03-20 13:27:56
【问题描述】:
我想让我的 jsRender 模板可选地包含一个“选项”属性,以便在不包含属性时提供可选的后备;如果包含“options”属性,则专门呈现一个元素,否则呈现另一个元素。如果传入的模型包含有问题的属性,一切正常,但即使{{if typeof ~options.someOption !== 'undefined'}} 给我Error: Cannot read property 'someOption' of undefined.
有人处理过这个吗?如果是这样,您如何处理传入的模型的不存在的属性?
编辑:这个问题实际上是关于如何处理模型的缺失属性。给定一个具有属性 A 和 B 的模型,如果模型中缺少属性 B,但在模板中引用了它,我该如何防止错误消息并优雅地处理它的缺失?
【问题讨论】:
-
这是否更符合您的目标,[link]borismoore.github.com/jsviews/demos/step-by-step/…)
-
虽然这很酷,但它更专注于 jsViews 和数据绑定。我的问题更核心是渲染以及如何选择/渲染模板。
-
您可以确保创建模型继承自模型。在 Backbone 中,您将创建一个模型并设置它的默认值,然后您基于此模型创建的每个新模型都保证具有所有属性,即使您可能不提供它们。 var Model = Backbone.Model.extend({ defaults: { "prop1": "value1", "prop2": "value2" });然后创建一个新模型。 var model = new Model({"prop1": "新值"});模型现在同时具有 prop1 和 prop2。
标签: javascript jquery jquery-plugins jsrender