使用对象数组作为Backbone模型

时间:2015-09-16 11:40:50

标签: javascript backbone.js

刚开始使用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事件。

有什么想法吗?

1 个答案:

答案 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 });

并为命中事件定义另一个侦听器。