ここにいくつかのコードがあります:
var TopPanel = Backbone.View.extend( {
initialize: function() {
this.listenTo(this.model, "change", this.render);
},
render: {
...
}
});
var MyData = Backbone.Model.extend({
initialize: function() {
},
defaults: {
team: {
level:0,
name: "bla"
}
}
});
var myData = new MyData();
var topPanel = new TopPanel({model: myData});
topPanel.render();
var anotherView = new AnotherView( {model: myData} );
別のビューでは、次のようにボタンをクリックしてモデルを変更しています。
var team = this.model.get("team");
team.level = 1;
this.model.set("team", team);
別のビューでボタンを押すと、上記のようにモデルが変更されますが、topPanel ビューのレンダリング関数は呼び出されません。ただし、上記のコードを次のように変更すると: var team = this.model.get("team"); チーム = 1; this.model.set("チーム", チーム);
render 関数が呼び出されます。
これは、 backbone.js が Model の複雑なオブジェクトの変更をリッスンすることをサポートしていないということですか? もしそうなら、それを行う正しい方法は何ですか?