0

我想将新模型附加到视图并重新渲染视图。我能够首先渲染视图,但是我无法将该视图中的数据更改为新模型。

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

有什么建议吗?

4

1 回答 1

0

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

例如

view_instance.model = my_model_2;
my_model_2.change();
于 2012-08-15T18:02:20.963 回答