2015-02-11 50 views
3

我的API基本上返回是這樣的:角NgRessource從Django的REST框架分頁結果

GET /api/projects/ 
{ 
"count": 26, 
"next": "http://127.0.0.1:8000/api/projects/?page=2", 
"previous": null, 
"results": [ 
    { 
     "id": 21, 
     "name": "Project A", 
     ... 
    }, 
    { 
     "id": 19, 
     "name": "Project B", 
     ... 
    }, 
    ... 
] 
} 

使用NgResource,我能夠查詢的API,並獲取數據是這樣的:

var PROJECT = $resource('/api/projects/:id/', {id:'@id'},{ 
    query : { 
     method : 'GET', 
     isArray : false 
    } 
}); 

factory.project_list = function(callback) { 
    PROJECT.query({},function(project_list){ 
     factory.project_list = project_list.results; 
     callback(); 
    }); 
}; 

我的不同項目現在可在factory.project_list中找到。這裏的問題是,factory.project_list中的每個項目都不是ngResource項目。所以我不能調用諸如$ save(),。$ update()之類的方法...

我看到了一個transformResponse()函數,但我無法輕鬆地使它工作...

你有什麼想法在這裏最好的辦法是什麼?

回答

2

這是對我工作:

app.config(['$resourceProvider', function($resourceProvider) { 
    $resourceProvider.defaults.stripTrailingSlashes = false; 
}]); 

services.factory('Project', ['$resource', 
    function($resource) { 
     return $resource('api/project/:id/', {}, { 
      query: { 
       method: 'GET', 
       url: 'api/projects/', 
       isArray: true, 
       transformResponse: function(data, headers) { 
        return angular.fromJson(data).results; 
       }, 
      }, 
     }); 
    } 
]);