Backbone.js 如何向视图添加新模型以自动重新渲染模板

Backbone.js 如何向视图添加新模型以自动重新渲染模板,backbone.js,backbone-views,Backbone.js,Backbone Views,我希望将新模型附加到视图,并重新渲染视图。我首先能够渲染视图,但在将该视图中的数据更改为新模型时遇到问题 my_model_1 = Backbone.Model.extend({}); my_model_2 = Backbone.Model.extend({}); my_view = Backbone.View.extend({ initialize : function() { _.bindAll(this, 'render'); this.model

我希望将新模型附加到视图,并重新渲染视图。我首先能够渲染视图,但在将该视图中的数据更改为新模型时遇到问题

my_model_1 = Backbone.Model.extend({});
my_model_2 = Backbone.Model.extend({});

my_view = Backbone.View.extend({
    initialize : function() {
        _.bindAll(this, 'render');
        this.model.bind('change', this.render);
    },

    render : function(){

    }
});

var view_instance = new my_view({ model: my_model_1 });

//Template gets rendered


try{
    view_instance.changeModel(my_model_2);
}catch(e){console.log(e)};
try{
    view_instance.set(my_model_2);
}catch(e){console.log(e)};
try{
    view_instance.fetch(my_model_2);
}catch(e){console.log(e)};
try{
    view_instance.model = my_model_2;
}catch(e){console.log(e)};  

//Template should get updated with data from model 2

有什么建议吗?

如果在模型中的数据发生更改时触发
change
事件,则在您的情况下,视图不会“重新生成”,因为其模型的数据没有更改,而只是切换模型。您可以在切换视图的模型后手动更改事件,或者调用它的
render
方法

比如说

view_instance.model = my_model_2;
my_model_2.change();

我现在已经解决了这个问题,这很大程度上取决于你的回答,尽管最终,它更像是一个范围问题(以及与你的建议相关)。最后我创建了一个window.model变量并将其设置为my_model_1,然后运行:var view_instance=new my_view({model:window.model});然后,我运行了:window.model.set(my_model_2),这触发了您所引用的“更改”,它更新了我的视图。非常感谢!你完全正确!