我正在設置集合中所有模型的value
屬性(在_.each
循環中)。循環結束後,每個value
屬性都保持不變。我相信這是因爲_.each
循環正在爲每個模型創建一個新的實例變量。有沒有一種標準的方式來更新我沒有遵循的集合的模型?如何更新集合中的所有模型 - Backbone.js
應該強制骰子成直線的代碼(1,2,3,4,5,6)。 rollableDice
是指具有value
屬性的骨幹模型的骨幹集合。這是一個容器模型的方法:
makeStraight: function() {
console.log('making straight');
console.log(_(this.rollableDice.models).pluck('value'));
var counter = 1;
_(this.rollableDice.models).each(function(die) {
console.log(die.get('value'));
die.set('value', counter);
console.log(die.get('value'));
counter++;
});
console.log(_(this.rollableDice.models).pluck('value'));
},
這是我在控制檯上看到輸出:
making straight
[1, 1, 3, 5, 2, 1]
undefined
1
undefined
2
undefined
3
undefined
4
undefined
5
undefined
6
[1, 1, 3, 5, 2, 1]
//編輯 這是控制檯輸出,我期望看到:
making straight
[1, 1, 3, 5, 2, 1]
1
1
1
2
3
3
5
4
2
5
1
6
[1, 2, 3, 4, 5, 6]
//編輯我將在@ numbers1311407的迴應中顯示模型代碼。我不應該使用模型方法來存儲和訪問屬性。相反,即使在模型內部,我也應該使用get/set方法或默認方法(http://backbonejs.org/#Model-defaults)。 這是什麼不能做:
var Die = Backbone.Model.extend({
initialize: function() {
_.bindAll(this, 'roll')
},
value: 1,
roll: function() {
this.value = _.random(1,6);
},
});
等一下,你是否在上面的'makeStraight'方法中使用了上面的模型代碼?我問,因爲Die.value與Die.attributes.value不一樣。後者是你調用'die.set('value',1)'時發生了改變。 – jackwanders 2013-05-06 18:40:27
是的,那正是我正在做的。 @ numbers1311407的迴應如下表述清楚。現在我正在使用模型屬性。 – Nathan 2013-05-07 14:26:42