Backbone:如何在视图中将一个模型替换为另一个模型?

时间:2013-10-15 09:22:55

标签: javascript backbone.js

我有一个应该显示单个模型的视图。通过单击链接,用户可以选择要显示的模型。当发生这种情况并且所选模型已经获取时,如何告诉视图切换到另一个模型?我看到了三种可能的选择。

  1. 以某种方式将视图重新绑定到新模型并刷新它。
  2. 回收模型对象 - 设置新选择的模型的ID和fetch(),希望它在视图中神奇地刷新。
  3. 删除视图,然后使用新模型重新创建视图(完成提取后)。
  4. 第一种方法感觉就像'正确'一样,但我找不到一种简单的方法(设置model很容易,但所有事件都应该反弹以使视图自动更新)。第二种感觉很奇怪,可能容易发生冲突(如果有相同ID的模型有两个对象会发生什么?)并且可能根本不起作用。第三个似乎太麻烦了。那么,我该怎么办?

1 个答案:

答案 0 :(得分:0)

您可能需要考虑使用BackBinder的ModelBinder库:https://github.com/theironcook/Backbone.ModelBinder

您有两种可能的方式来刷新视图。您可以将模型绑定到视图一次,然后始终更新模型中的属性。这种方式在Model属性更改时,ModelBinder将自动更新View。

另一种解决方案是从View中取消绑定Model,并将其重新绑定到另一个Model。

这可能会给你一个想法:http://jsfiddle.net/dazqS/视图中有一个refreshModel函数,它取消绑定旧模块,然后重新绑定新模块。

refreshModel: function(model){
    this._modelBinder.unbind();
    this.model = model;
    this._modelBinder.bind(this.model, this.el);
}