Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干:如何在视图中用另一个模型替换一个模型?_Javascript_Backbone.js - Fatal编程技术网

Javascript 主干:如何在视图中用另一个模型替换一个模型?

Javascript 主干:如何在视图中用另一个模型替换一个模型?,javascript,backbone.js,Javascript,Backbone.js,我有一个视图,应该显示一个模型。通过单击链接,用户可以选择要显示的模型。当这种情况发生时,并且选定的模型已获取,我如何告诉view切换到另一个模型?我认为有三种可能的选择 以某种方式将视图重新绑定到新模型并刷新它 回收模型对象-设置新选择的模型的ID并fetch()它,希望它能在视图中神奇地刷新 删除视图,然后使用新模型重新创建它(当它完成抓取时) 第一种方法感觉像是“正确”的方法,但我找不到一种简单的方法(设置model很容易,但所有事件都应该反弹,以便视图自动更新自身)。第二种感觉很奇怪,可

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

  • 以某种方式将视图重新绑定到新模型并刷新它
  • 回收模型对象-设置新选择的模型的ID并
    fetch()
    它,希望它能在视图中神奇地刷新
  • 删除视图,然后使用新模型重新创建它(当它完成抓取时)

  • 第一种方法感觉像是“正确”的方法,但我找不到一种简单的方法(设置
    model
    很容易,但所有事件都应该反弹,以便视图自动更新自身)。第二种感觉很奇怪,可能容易发生冲突(如果模型中有两个具有相同ID的对象会发生什么情况?),并且可能根本不起作用。第三个似乎太麻烦了。那么,我该怎么办?

    您可能需要考虑使用MyBrand库作为主干:

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

    另一种解决方案是将模型从视图中解除绑定,然后将其重新绑定到另一个模型

    这可能会给你一个想法:视图中有一个refreshModel函数,它解除旧模型的绑定,并重新绑定新模型

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