免责声明:我是 Backbone.js 的新手(来自 AngularJS),所以我可能对它应该如何工作有一个不准确的心理模型。
我有一个对象,characterNodes,我正在我的模型上创建一个属性。characterNodes 看起来像这样:
var characterNodes = {
character_1: {
stories: [// list of Stories]
},
character_2: {
stories: [// list of Stories]
}
...
}
我的骨干模型看起来像这样:
var StoryGraph = joint.dia.Graph.extend({
initialize: function() {
// Call parent constructor
StoryGraph.__super__.initialize.apply(this, []);
this.set('characterNodes', characterNodes);
this.on('change:characterNodes', function() {
alert('test');
});
}
});
每个故事都有一个属性“isUnlocked”,该属性在应用程序的其他地方被更改。每当更改此属性时,我想触发一个事件(即,应该弹出警报“测试”)。使用上面的代码,事件似乎永远不会触发。
我无法从 Backbone 文档中清楚地了解这是否应该起作用 - 每当 characterNodes 的任何属性(或子属性或子子属性等)发生变化时都会触发 on('change:characterNodes') ? 还是仅当指向对象的指针发生变化时,即当它被另一个对象替换时?还是我做错了什么?谢谢!