3

我正在尝试从 JSON url 获取集合。主干确实发送了请求并得到了响应,但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());
4

2 回答 2

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());
});
于 2012-05-16T14:27:31.117 回答
1

摆脱 Item 类中的初始化函数。你不需要它。

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

于 2012-05-16T13:57:36.247 回答