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 に答える