2

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

现在,假设用户需要在视图中编辑该模型 - 例如:他更新了他的名字。我设置模型的 url,更新名称并调用保存。它调用后端(在我的例子中是泽西岛)并被保存。但是,该集合仍未自动更新。

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

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

谢谢。

4

1 回答 1

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,则不需要这样做。您可以像这样在 Collection 中声明 URL:

  • /app/collection

Backbone 将使用这些 URL 作为 API:

  • (GET)/app/collection获取整个集合
  • (GET)/app/collection/1仅获取 id = 1 的模型
  • (PUT)/app/collection/1使用 id = 1 更新模型
  • (POST)/app/collection创建一个新模型
  • ...删除等等
于 2012-08-02T13:57:00.027 回答