2

我正在尝试用自定义 $http-GET 覆盖 AngularJS $resource 的 query() 方法。但是,它似乎并没有覆盖操作的结果。它返回一个带有method,dataheaders, not的对象data.rows[]

angular.module('couchdb', ['ngResource']).
  factory('Project', function($resource, $http) {
    var Project = $resource('http://couchdb/mydb', {}, {
        'update': { method: 'PUT' },
        'query':  {method:'GET', isArray: false}
      }
    );

    Project.query = function() {
      return $http({method: 'GET', url: 'http://couchdb/mydb/_design/projects/_view/index'}).
        success(function(data, status, headers, config) {
          return data.rows;
        }).
        error(function(data, status, headers, config) {
          $scope.data = data || "Request failed";
          $scope.status = status;
        });
    };

    return Project;
  });

如何仅获取资源结果的行?

4

1 回答 1

0

ngResources 不需要依赖$http服务。您不需要重新定义该Project.query功能 - 因为您已经将其指示为 的操作Project $resource(除了默认情况下包含它之外)。

这意味着该Project.query函数已准备就绪,无需重新定义。你可以从字面上做得到Project.query()结果。它支持成功/失败的回调,因此Project.query({}, successCallback, failureCallback)不会提交任何参数,并允许您访问返回的数据。

我建议你仔细阅读AngularJS $resource 文档,因为它们提供了很多很好的例子。Angular 教程的第 11 步中还包含一个基本示例。

于 2013-02-18T16:20:46.227 回答