2015-02-11 1 views
3

Мой апи основном возвращает что-то вроде этого:Угловая NgRessource с страничных результатами рамках Джанго отдыха

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; 
       }, 
      }, 
     }); 
    } 
]);