javascript - model.set 在控制台中工作,但不在我的实际脚本中工作

标签 javascript backbone.js underscore.js

我试图在我的集合的每个模型中设置一个属性,但我使用的代码不起作用(属性尚未更新),尽管当我直接在控制台中运行它时它可以工作。这是我的代码,有问题的代码是 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/

相关文章:

javascript - 来自外部 JSON 文件的主干集合未呈现

Backbone.js 集合更新插入?

javascript - 使用不带下划线的 map 重新格式化对象

javascript - 合并两个对象数组,同时对特定键求和

Chromium 中的 JavaScript 语法错误 : missing ) after argument list

javascript - 如何在 node.js 中渲染three.js?

javascript - Ember - 在加载、转换和调整大小时调整 DIV 大小?

javascript - mongodb 将 xml 导入 mongodb

javascript - 主干更改事件未触发

javascript - 将项目合并到 json 中