backbone.js 能否在一个视图中更新 2 个独立模型

Can 2 independent models be updated in one view in backbone.js

我有 2 个单独的模型,我需要在其中一个视图中更改这些模型。

可以使用 backbone.js

来完成吗

如果是,谁能给我一个简短的样本

谢谢

一种方法是将这些模型中的 collection 绑定到视图:

var collection = new Backbone.Collection();
collection.add(model1);
collection.add(model2);

创建视图时,应使用此集合对其进行初始化:

var myView = new View({collection:collection});

然后,在视图中您可以按以下方式更改每个视图:

  events :{ 'input input' : 'updateModels'},
  updateModels: function(e){
    for(var i=0;i<this.collection.length;i++)
    {
        this.collection.at(i).set({'someProperty':'someValue'});
    }
  }

上面的例子会在用户输入时触发。

另一种方法是在您的集合中设置一个自定义 属性 来保存这些模型的数组,然后做同样的事情,但我认为使用集合可以为您完成这项工作。

你可以在这里看到一个非常简单的虚拟示例:http://jsfiddle.net/nwo5bww1/

var app = app||{};

app.Model1 = Backbone.Model.extend({
   //some code
});
app.Model2 = Backbone.Model.extend({
   //some code
});
var model1 = app.Model1();
var model2 = app.Model2();

app.View = Backbone.View.extend({
   initialize : function(options){
   console.log(options.model1);
   console.log(options.model2);
   }
});

var view = new app.View({model1 : model1, model2 : model2});

因此,您可以绑定多个模型,并定义适当的函数来单独更新模型。

另一种非常酷的方法是使用此处介绍的动态模型:Backbone.js: complex views combining multiple models