[英]Backbone extend a model before rendering it to a template
我想將其他變量傳遞給模板,即模型中未包含的一些變量。 這些基本上是顯示參數,例如屏幕接下來如何顯示給用戶。 它不必保存在數據庫中。
我嘗試了這個,但似乎不起作用:
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時,出現錯誤,未定義變量。 我想念什么?
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.