1

我想将其他变量传递给我的模板,即模型中不包含的一些变量。这些基本上是显示参数,例如屏幕接下来将如何呈现给用户。它不必保存在数据库中。

我试过这个,但它似乎不起作用:

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 时,我收到一个错误,即未定义变量。我错过了什么?

4

1 回答 1

3

model.toJSON()返回模型的属性而不是属性。由于您的扩展函数将这些属性直接添加到模型中,因此当您将输出传递toJSON给模板时,它们是未定义的。

要么添加extra_list到模型的属性(听起来你不想这样做),要么结合toJSONwith的输出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;
  }
于 2013-09-10T00:12:37.743 回答