我从服务器检索模型列表到集合中。当用户对特定模型感兴趣时,我会根据 id 将其路由到该模型的查看器。
现在,假设用户需要在视图中编辑该模型 - 例如:他更新了他的名字。我设置模型的 url,更新名称并调用保存。它调用后端(在我的例子中是泽西岛)并被保存。但是,该集合仍未自动更新。
为什么集合不能绑定到模型中的每个更改并自行更新?
保存作为集合一部分的模型的正确方法是什么?在模型上调用保存(通过设置其 url)然后从其父集合中删除然后再次使用静默:true 添加它是否正确?
谢谢。
我从服务器检索模型列表到集合中。当用户对特定模型感兴趣时,我会根据 id 将其路由到该模型的查看器。
现在,假设用户需要在视图中编辑该模型 - 例如:他更新了他的名字。我设置模型的 url,更新名称并调用保存。它调用后端(在我的例子中是泽西岛)并被保存。但是,该集合仍未自动更新。
为什么集合不能绑定到模型中的每个更改并自行更新?
保存作为集合一部分的模型的正确方法是什么?在模型上调用保存(通过设置其 url)然后从其父集合中删除然后再次使用静默:true 添加它是否正确?
谢谢。
当您说“集合不会自动更新”时,我猜您的意思是“视图不会自动更新”。
视图不会响应模型更改,至少您使用绑定明确表示:
// code simplified and no tested
var MyModel = Backbone.Model.extend({});
var MyModelView =
Backbone.View.extend({
initialize: function(){
this.model.on( "change:all", this.render, this );
},
render: function(){
this.$el.html( "<h1>" + this.model.title + "</h1>" );
}
})
正如@OlliM 所说,如果您的后端支持标准 CRUD API,则不需要这样做。您可以像这样在 Collection 中声明 URL:
/app/collection
Backbone 将使用这些 URL 作为 API:
/app/collection
获取整个集合/app/collection/1
仅获取 id = 1 的模型/app/collection/1
使用 id = 1 更新模型/app/collection
创建一个新模型