通过Backbone获取后为什么“未定义”?

时间:2012-12-11 10:51:55

标签: backbone.js

我做了一个简单的实验来理解对模型的提取和对集合的提取。但是,此代码为两者提供了“undefined”:

    // Model and Collection
    var SingleItem = Backbone.Model.extend({
      urlRoot : '/data/item.json',
      parse: function(response) {
          console.log(response);
          return response;
      }
    });

    var ManyCollection = Backbone.Collection.extend({
      model: SingleItem,
      url: '/data/items.json',
    });

    var many = new ManyCollection();
    many.fetch();
    console.log(many);

    var single = new SingleItem();
    single.fetch({
      success: function(data) {
        console.log("OK"); 
        console.log(data.toJSON());
      },
      error: function(data){
        console.log("NOK");
      }
    });


    console.log(single.get('name'));

演示也在这里:https://github.com/mulderp/backbone-model-fetch

为什么我会'未定义'?我错过了什么?

(从开发控制台输出:

dev output

1 个答案:

答案 0 :(得分:3)

fetch是异步的:它将在获取数据之前立即返回。

将调试逻辑移到success处理程序内部可以解决问题。