刚开始使用Backbone很抱歉,如果这是一个基本问题。
我有一个Model,它有一个对象数组作为属性,就像这样。
var Ship = Backbone.Model.extend({
defaults: {
coordinates: []
},
initialize: function () {
this.on('change:coordinates', this.onChange);
},
onChange: function () {
console.log('CHANGED!!');
},
});
var ship = new Ship();
ship.set('coordinates', [{xAxis:1, yAxis:1}, {xAxis:1, yAxis:2}]);
var targetHitCoordinates = _.findWhere(ship.get('coordinates'), {xAxis:1, yAxis:1});
targetHitCoordinates.isHit = true;
console.log(ship);
当我将isHit设置为true时,即使将属性添加到数组内的坐标对象,也不会触发change事件。
有什么想法吗?
答案 0 :(得分:0)
我认为这是因为您没有使用.set方法。
这样的事情应该有效:
var targetHitCoordinates = _.findWhere(ship.get('coordinates'), {xAxis:1, yAxis:1});
targetHitCoordinates.isHit = true;
ship.set('coordinates', [targetHitCoordinates]);
让我知道它是否有效
我不确定你是如何管理模型属性的,但无论如何你需要使用.set()
所以你可以使用
ship.set({ hit:true });
并为命中事件定义另一个侦听器。