我试图在我的集合的每个模型中设置一个属性,但我使用的代码不起作用(属性尚未更新),尽管当我直接在控制台中运行它时它可以工作。这是我的代码,有问题的代码是 questions.forEach...:
var Question = Backbone.Model.extend({
urlRoot: "questions.json"
});
var Questions = Backbone.Collection.extend({
model: Question,
url: "questions.json",
parse: function(response){
return response.questions;
}
});
var questions = new Questions();
questions.fetch();
var questionOrder = [];
while (questionOrder.length != 10){
var randomNum = Math.floor(Math.random() * 10);
if (questionOrder.indexOf(randomNum) == -1) {
questionOrder.push(randomNum);
}
}
questions.forEach(function(model, i) {
model.set({"order": questionOrder[i]});
});
最佳答案
在尝试更新模型之前,您必须确保提取已完成。
将更新函数放在获取的回调中。
(确保在调用 fetch 之前设置了 QuestionOrder。)
questions.fetch(success: function() {
questions.forEach(function(model, i) {
model.set({"order": questionOrder[i]});
})
;);
在控制台中运行时,您不需要等待获取。
关于javascript - model.set 在控制台中工作,但不在我的实际脚本中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29728794/