5
My REST api returns data in json in following format for `/api/users`:

{
    "objects":[
        {"User":{"id":"1","created":"2013-02-13 09:22:42","modified":"2013-02-13 09:22:42","username":"some.email@gmail.com","role":"admin"}},
        {"User":{"id":"2","created":"2013-02-13 09:22:55","modified":"2013-02-13 09:22:55","username":"some.email2@gmail.com","role":"analyst"}},
        {"User":{"id":"3","created":"2013-02-13 09:23:02","modified":"2013-02-13 09:23:02","username":"some.email3@gmail.com","role":"moderator"}},
        {"User":{"id":"4","created":"2013-02-13 09:23:10","modified":"2013-02-13 09:23:10","username":"some.email4@gmail.com","role":"representative"}}
        ],
    "meta":
        {"page":1,"pageCount":1,"prevPage":false,"nextPage":false,"limit":20,"count":4,"sort":null,"direction":null}
}

/api/users/{id}次の形式でデータを返します。

{"User":{"id":"1","created":"2013-02-13 09:22:42","modified":"2013-02-13 09:22:42","username":"some.email@gmail.com","role":"admin"}

これを Backbone.js Collection および Model と統合するにはどうすればよいですか? Backbone.js は、API がオブジェクト dict または純粋なオブジェクト dict の配列を返すことを期待していることを知っています - それを変更する方法はありますか?

4

1 に答える 1

10

はいあります。model.parseまたはcollection.parseをオーバーライドできます。例えば:

var UserCollection = Backbone.Collection.extend({
                model: User, 
                url: '/api/users',
                parse: function(response) {
                        // process response.meta when necessary...
                        return response.objects;
                    });
                }
            });

var UserModel = Backbone.Model.extend({
                 //...
                 parse: function(response) {
                        return response.User;
                    });
                }
            });
于 2013-02-13T10:40:38.800 に答える