簡體   English   中英

骨干在將模型渲染到模板之前先對其進行擴展

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM