使用一组对象作为Backbone模型中的属性
问题描述:
刚开始时使用Backbone,如果这是一个基本问题,那么很抱歉。使用一组对象作为Backbone模型中的属性
我有一个模型,它有一个对象数组作为属性,像这样。
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时,即使将属性添加到数组中的坐标对象,也不会触发更改事件。
任何想法?
答
我想这是因为你没有使用.set方法。
类似的东西应该工作:
var targetHitCoordinates = _.findWhere(ship.get('coordinates'), {xAxis:1, yAxis:1});
targetHitCoordinates.isHit = true;
ship.set('coordinates', [targetHitCoordinates]);
让我知道,如果它
我不知道,了解你,你的管理模型属性的方式,但无论如何,你需要使用.SET ()
所以,你可以使用探微
ship.set({ hit:true });
和定义另一个听众的热门事件。
是否触发了第一个坐标.set? –
是的,但当isHit被改变时没有 – David