我有一系列模特。当我更新其中一个模型时,我需要在集合中设置它。
我可以获得oldModel及其索引,但是如何将返回的(模型)设置为所需索引中的集合。
我需要这样的东西regionProofsView.collection.models.set(index,model)
。
这是我的代码:
myView.on("childview:model:update", function(childView, id) {
var fetchingModel = VialinkSignManager.request("model:update", id);
$.when(fetchingModel).done(function(model) {
var oldModel=myView.collection.get(id);
var index=regionProofsView.collection.models.indexOf(oldProof);
// here i need to set the model into the collection
myView.render();
});
});
答案 0 :(得分:0)
您只想用新型号替换旧型号吗? Backbone已经尝试为您处理这个问题。假设您没有更改ID,旧模型ID =新模型ID,那么您所要做的就是调用collection.set(model)
。它将在集合中搜索具有相同ID且来自http://backbonejs.org/#Collection-set
如果模型已经在集合中,则其属性将被合并;
答案 1 :(得分:0)
在对骨干文档进行研究之后,我发现这种方法是一种解决方案。 在获取oldModel及其索引之后,我将其删除并在其索引中添加新模型:
myView.on("childview:model:update", function(childView, id) {
var fetchingModel = VialinkSignManager.request("model:update", id);
$.when(fetchingModel).done(function(model) {
var oldModel = myView.collection.get(id);
var index = myView.collection.models.indexOf(oldModel);
myView.collection.remove(oldModel);
myView.collection.add(model, {
at: index
});
});
答案 2 :(得分:-1)
为什么不听取变化事件?模型更改时会触发更改事件。
this.listenTo(this.collection, 'change', view.doSomething);