2015-02-11 69 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; 
       }, 
      }, 
     }); 
    } 
]);