2013-02-13 17 views
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":"[email protected]","role":"admin"}}, 
     {"User":{"id":"2","created":"2013-02-13 09:22:55","modified":"2013-02-13 09:22:55","username":"[email protected]","role":"analyst"}}, 
     {"User":{"id":"3","created":"2013-02-13 09:23:02","modified":"2013-02-13 09:23:02","username":"[email protected]","role":"moderator"}}, 
     {"User":{"id":"4","created":"2013-02-13 09:23:10","modified":"2013-02-13 09:23:10","username":"[email protected]","role":"representative"}} 
     ], 
    "meta": 
     {"page":1,"pageCount":1,"prevPage":false,"nextPage":false,"limit":20,"count":4,"sort":null,"direction":null} 
} 

自定義REST API響應爲/api/users/{id}它下面的格式返回數據:在Backbone.js的

{"User":{"id":"1","created":"2013-02-13 09:22:42","modified":"2013-02-13 09:22:42","username":"[email protected]","role":"admin"} 

我怎麼能與Backbone.js的收集和整合型的?我知道Backbone.js希望api返回對象字典或純對象字典的數組 - 有沒有辦法改變它?

回答

10

是的,有。您可以覆蓋model.parsecollection.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; 
        }); 
       } 
      }); 
+0

爲我節省了很多,thx。 – Kiddo 2013-02-22 16:30:15