2015-04-19 46 views
0

我想在我的集合的每個模型中設置屬性,但我使用的代碼不工作(屬性尚未更新),儘管它當我直接運行到控制檯時工作。這裏是我的代碼,有問題的代碼是questions.forEach ...:model.set在控制檯中但在我的實際腳本中不知道

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

}); 

回答

1

你必須確保獲取正試圖更新模型前完成。

將更新函數放在回讀函數中。
(請確保您調用獲取之前設置questionOrder。)

questions.fetch(success: function() { 
    questions.forEach(function(model, i) { 
     model.set({"order": questionOrder[i]}); 
    }) 
;); 

當在控制檯中運行,你並不需要等待取回。

相關問題