首页 > Backbone collection fetch的问题

Backbone collection fetch的问题

我希望通过fetch方法重置collection对象, 但是返回的json格式无法实现理想的数据填充。

    var Posts = Backbone.Collection.extend({
        url: "/api/classes/Post",
        model: Post
    })
    
    var posts = new Posts
    
    posts.fetch()
    
    console.assert(posts.models.length === 3)
    /* 失败了 因为返回数据不是一个数组而是对象,返回数据格式被固定化了,有什么办法可以从js代码方面去解决这个问题?*/
    
/* 返回数据的格式 */
{
    data: [{
        title: 't1',
        content: 'c1'
    }, {
        title: 't2',
        content: 'c2'
    }, {
        title: 't3',
        content: 'c3'
    }]
}

自己在stackoverflow查到了相类似的问题
how-can-i-get-backbone-data-from-nested-json-key

可以通过增加一个parse方法来解决这个问题。

    var Posts = Backbone.Collection.extend({
        url: "/api/classes/Post",
        model: Post,
        parse: function(res){
            return res.data
        }
    });

var posts = new Posts()

posts.fetch()

// 这样是否是你想要的?
posts.models = posts.models.data

console.assert(posts.models.length === 3)
【热门文章】
【热门文章】