通过JSON文件设置Backbone模型

时间:2013-11-26 08:22:02

标签: javascript backbone.js

我是骨干新手,我正在尝试设置一个模型集合,其中包含从json文件加载的数据。但它不会被设定。问题出在这里?谁有想法?当我获取集合时,它似乎是空的。

JSON

{
"items": [
    {
        "id": "0",
        "media": "",
        "desc": "lorem",
        "img": "ipsum"
    },
    {
        "id": "1",
        "media": "",
        "desc": "lorem",
        "img": "ipsum"
    }
]

}

Javscript

    var Card = Backbone.Model.extend({  
    defaults: function() {  
        return {  
            items: {
                id: "lorem",  
                media: "lorem",
                desc:"lorem",
                img: "lorem"
            }  
        };  
    },  

    clear: function() {  
        this.destroy();  
    }  
});  

var CardCollection = Backbone.Collection.extend({  
    model: Card,  
    url: "file.json",
    parse: function (response) {
        for (var i = 0; i<response.items.length; i++) {

        }
    } 
});  

var cards = new CardCollection();
cards.fetch();  
console.log(cards)

3 个答案:

答案 0 :(得分:0)

使用响应调用CardCollection.parse方法。如果服务器的响应不需要转换,则可以删除CardCollection的解析方法。默认实现是直通,响应按原样使用。

基本上parse应返回要添加到集合中的数组。当前的实现没有做任何事情。实施时缺少返回。

答案 1 :(得分:0)

只需从你的解析方法中返回一些东西,你就可以了。它应该返回一个对象数组,每个对象都适合您的模型。所以最后你将拥有一个与从parse方法返回的对象数组相对应的模型集合。

试试这个

var CardCollection = Backbone.Collection.extend({  
  model: Card,
  url: "file.json",
  parse: function (response) {
    return response.items;
  }
});

阅读此Documentation on Parse Method以获取更多信息。

答案 2 :(得分:0)

fetch是异步的,它会在数据加载之前立即返回。

试试这个

var cards = new CardCollection();
cards.fetch({
    success: function () {
        console.log(cards);
    }
});