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事件将触发并触发到您的模型或其集合的任何绑定

希望有帮助:)