gpt4 book ai didi

javascript - 如何更新集合中的所有模型 - Backbone.js

转载 作者:行者123 更新时间:2023-11-28 11:37:19 25 4
gpt4 key购买 nike

我正在设置集合中所有模型的 value 属性(在 _.each 循环中)。循环结束后,每个value属性都保持不变。我相信这是因为 _.each 循环正在为每个模型创建一个新的实例变量。是否有一种标准方法可以更新我未遵循的集合模型?

强制骰子变成顺子的代码 (1,2,3,4,5,6)。 rollableDice 指的是具有 value 属性的 Backbone 模型的 Backbone 集合。这是容器模型上的方法:

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);
},
});

最佳答案

只需使用collection.each方法即可。

myCollection.each(function(model) {
// do stuff
});

检查 Backbone.Collection 扩展的 Underscore.js 方法:http://backbonejs.org/#Collection-Underscore-Methods

关于javascript - 如何更新集合中的所有模型 - Backbone.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16404168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com