Backbone Collection - 模型更新

时间:2012-08-02 11:55:43

标签: backbone.js backbone-events

我从服务器检索模型列表到集合中。当用户对特定模型感兴趣时,我会根据id将其路由到该模型的查看器。

现在,假设用户需要在视图中对该模型进行编辑 - 例如:他更新了他的名字。我设置模型的url,更新名称并调用save。它调用后端(在我的情况下为Jersey)并且它被保存。但是,该集合仍未自动更新。

为什么集合不能绑定到模型中的每个更改并自行更新?

保存作为集合一部分的模型的正确方法是什么?是否正确调用模型上的保存(通过设置其URL),然后从其父集合中删除,然后使用silent:true再次添加它?

感谢。

1 个答案:

答案 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>" );
    }
  })

为每个模型明确声明URL

正如@OlliM所说,如果您的后端支持标准CRUD API,则不需要这样做。您可以像这样在集合中声明URL:

  • /app/collection

Backbone将使用此URL作为API:

  • (GET)/app/collection获取整个集合
  • (GET)/app/collection/1仅获取ID = 1
  • 的模型
  • (PUT)/app/collection/1使用id = 1
  • 更新模型
  • (POST)/app/collection创建新模型
  • ...删除等等