我想将其他变量传递给我的模板,即一些未包含在模型中的变量。这些基本上是显示参数,例如屏幕将如何向用户显示。它不必保存在数据库中。
我试过了,但它似乎不起作用:
render: function () {
this.extra_list = _.shuffle(this.extra_list);
jQuery.extend(this.model, this.extra_list);
this.$el.html(this.template(this.model.toJSON()));..
return this;
}
当我在模板中引用extra_list时,我得到一个错误,即未定义变量。我错过了什么?
答案 0 :(得分:3)
model.toJSON()
返回模型的属性而非属性。由于您的扩展函数是将这些属性直接添加到模型中,因此在将toJSON
的输出传递给模板时,它们是未定义的。
将extra_list
添加到模型的属性中(听起来您不想这样做),或将toJSON
的输出与extra_list
合并,然后将其传递给模板。
编辑:如评论中所述,您可以使用_.extend
将extra_list与模型的属性“合并”:
render: function () {
this.extra_list = _.shuffle(this.extra_list);
var data = _.extend(this.model.toJSON(), this.extra_list);
this.$el.html(this.template(data));
return this;
}