【问题标题】:Angular NgRessource with paginated results from django rest frameworkAngular NgRessource 带有来自 django rest 框架的分页结果
【发布时间】:2015-04-12 04:36:06
【问题描述】:

我的 api 基本上返回如下内容:

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() 函数,但我无法让它轻松工作...

您知道这里最好的方法是什么吗?

【问题讨论】:

    标签: django angularjs django-rest-framework ngresource


    【解决方案1】:

    这对我有用:

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

    【讨论】:

      猜你喜欢
      • 2015-06-05
      • 2014-10-09
      • 2014-02-17
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-01
      相关资源
      最近更新 更多