为什么fetch()不起作用?

时间:2012-05-16 13:41:24

标签: json backbone.js

我正在尝试从JSON网址获取一个集合。骨干确实发送请求并且确实得到了响应但是之后集合中没有models

这是我的JavaScript:

stores.fetch();

响应中的JSON

[{"name":"Store 1"},{"name":"Store 2"},{"name":"Store 3"},{"name":"Store 4"}]

响应中的Content-Type HTTP标头为application/json

为什么不加载到集合中? JSON是否正确?

更多代码:

be.storeList.Item = Backbone.Model.extend({
    defaults: {
        id: null,
        name: null,
        description: null
    },
    initialize:function(attrs){
        attrs.id = this.cid;
        this.set(attrs);
    }
});

be.storeList.Items = Backbone.Collection.extend({
    model: be.storeList.Item,
    url:'/admin/stores'
});

var stores = new be.storeList.Items();
stores.fetch();
console.log(stores.toJSON());

2 个答案:

答案 0 :(得分:3)

fetch是异步的。试试

stores.fetch({ 
    success:function() {
        console.log(stores.toJSON());
    }
});

stores.on("sync", function() {
    console.log(stores.toJSON());
});
stores.fetch();

stores.fetch().then(function() {
    console.log(stores.toJSON());
});

答案 1 :(得分:1)

摆脱Item类中的initialize函数。你不需要它。

没有stores.models这样的东西 - 如果你想看看里面有什么,你必须做console.log(stores.toJSON());