我从服务器检索模型列表到集合中。当用户对特定模型感兴趣时,我会根据id将其路由到该模型的查看器。
现在,假设用户需要在视图中对该模型进行编辑 - 例如:他更新了他的名字。我设置模型的url,更新名称并调用save。它调用后端(在我的情况下为Jersey)并且它被保存。但是,该集合仍未自动更新。
为什么集合不能绑定到模型中的每个更改并自行更新?
保存作为集合一部分的模型的正确方法是什么?是否正确调用模型上的保存(通过设置其URL),然后从其父集合中删除,然后使用silent:true再次添加它?
感谢。
答案 0 :(得分:0)
当您说“该集合未自动更新”我想您的意思是“视图未自动更新”。
视图不会响应模型更改,至少您是如此明确地使用绑定:
// 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,则不需要这样做。您可以像这样在集合中声明URL:
/app/collection
Backbone将使用此URL作为API:
/app/collection
获取整个集合/app/collection/1
仅获取ID = 1 /app/collection/1
使用id = 1 /app/collection
创建新模型