Jquery 更新集合中的模型
我的问题是如何更新集合中的模型?这就是我正在做的。在页面加载时,我获取联系人列表。在一个视图中,我以无序列表的形式列出了这些联系人。每个联系人都可以单击,这将带您进入编辑表单。对联系人进行更改后,可以保存联系人。这将带您找到一种方法,将修改后的模型保存回集合。你会怎么做?在主干文档中没有更新方法(或者至少我没有看到)。我创造了一种方法来做到这一点,但我不确定这是否是首选的主干方式。这是:Jquery 更新集合中的模型,jquery,backbone.js,javascript-framework,backbone-events,Jquery,Backbone.js,Javascript Framework,Backbone Events,我的问题是如何更新集合中的模型?这就是我正在做的。在页面加载时,我获取联系人列表。在一个视图中,我以无序列表的形式列出了这些联系人。每个联系人都可以单击,这将带您进入编辑表单。对联系人进行更改后,可以保存联系人。这将带您找到一种方法,将修改后的模型保存回集合。你会怎么做?在主干文档中没有更新方法(或者至少我没有看到)。我创造了一种方法来做到这一点,但我不确定这是否是首选的主干方式。这是: updatePlan : function() {
updatePlan : function()
{
//unique ID of the model
var id = $( 'input[ name=id ]' ).val();
//remove the old model from the collection
this.collection.remove( this.model );
//add the updated model to the collection
this.collection.add( this.model );
}
你会认为会有这样一个函数:
updatePlan : function()
{
this.collection.update( this.model );
}
感谢您的帮助您可以查看允许用户编辑联系人并为您更新模型的视图。由于模型是通过引用传递的,因此它也将在它所属的集合中更新 这里有一个例子
EditView = Backbone.View.extend({
events: {
'change #name': 'nameChanged',
'change #age': 'ageChanged'
},
render: function() {
//render code
},
nameChanged: function() {
var nameValue = this.$('#name').val();
this.model.set({ Name : nameValue });
},
ageChanged: function() {
var ageValue = this.$('#age').val();
this.model.set({ Age : ageValue });
}
}
然后在创建编辑视图时,传入集合中选定的模型
selectedContact = contactCollection.at(0);
var editView = new EditView({ model: contact });
$('#editDiv').html(editView.render().el);
剩下要做的唯一一件事是在用户单击save按钮时将模型保存到服务器
$('#saveButton').click(function() {
selectedContact.save();
});
我同意保罗的观点,你应该对你的收藏有一个看法,对你的模型有一个看法。 模型的视图允许您编辑模型,保存应正确向上传播 不过,也就是说,您似乎有一个视图,其中有一个模型和一个集合(基于您的删除和添加this.model),所以您有一个视图显示单个模型。。。我猜是D 你可以这样做
updatePlan : function()
{
//unique ID of the model
var id = $( 'input[ name=id ]' ).val();
this.model.set({id: id});
this.model.save();
}
我认为问题可能只是您最初的“逻辑”,您不需要编辑集合中的模型。
编辑模型时,该模型恰好属于一个集合。
因此,将为模型和model.collection触发事件,就像在您的id集上一样,Change:id事件将触发并触发到您的模型或其集合的任何绑定
希望有帮助:)