覆盖angular $ resource函数

时间:2013-02-13 17:13:00

标签: javascript angularjs

我正在尝试用自定义$ http-GET覆盖AngularJS $资源的query()方法。但是,它似乎没有覆盖操作的结果。它返回的对象包含methoddataheaders,而不是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;
  });

我怎样才能获取资源的结果行?

1 个答案:

答案 0 :(得分:0)

ngResource不需要依赖$http服务。您无需重新定义Project.query函数 - 因为您已将其指定为Project $resource的操作(除了默认情况下包含它)。< / p>

这意味着Project.query函数已准备就绪,不需要重新定义。您可以直接执行Project.query()来获得结果。它支持成功/失败的回调,因此Project.query({}, successCallback, failureCallback)将不提交任何参数,并允许您访问返回的数据。

我建议你仔细阅读AngularJS $resource documentation,因为它们提供了很多很好的例子。 Step 11 of the Angular Tutorial中还包含一个基本示例。