我有一个基本的骨干模型集合。
我正在使用的视图显示有关模型的信息,允许编辑。
在我的视图渲染中,我基于传入的'id'捕获模型。
render: function() {
this.model = myCollection.get(this.options.passedInId);
// do the render...
}
然后我有一个click事件,它更新模型并调用渲染器以使用更新重新渲染
updateModel: function() {
var me = this;
this.model.set('someFlag', true);
this.model.save(this.model.toJSON(), {
success: function(model, resp) {
me.render();
}
}
我的问题是当它从渲染中返回时第二次从集合中获取返回模型的不同实例(我可以在其上看到不同的cId),它不包含我更改的“someFlag”属性。因此,重新渲染视图时,我的编辑不会显示。我知道可能有一种更有效的处理方式,但我的问题是为什么会发生这种情况?从集合中获取的模型是否应该包含我在该模型上进行的编辑?
只有其他的事情是这个例子中的“myCollection”可能在编辑后的初始get和下一个get之间被重置,但id仍然存在,并且它只找到一个没有任何更新的模型。 / p>
答案 0 :(得分:1)
我的问题是在render方法和updateModel方法之间重置了集合。
这导致模型与集合不同步以纠正问题我需要做的就是重置绑定并确保我的模型使用“新”版本进行更新。我把它添加到我的渲染中。
var me = this;
this.collection.on('reset', function () {
me.model = this.get(me.model.id);
};