在 Angularjs 中使用 $resource 替代 http 无效

Using the $resource as alternative to http in Angularjs not working

我正在学习 Angularjs,在我的第一个应用程序中,我将 $http 替换为 $resource 并出现错误。以下是我之前的服务和现在的服务:

angular.module('myApp')
  .service('fetchData', function ($http, $rootScope, myService) {
// AngularJS will instantiate a singleton by calling "new" on this function
  this.fetchNames=function() {
      return $http.get(myService.getDomainUrl() + '/names.json');
  }

});

下面是我的新代码 $resource

angular.module('myApp')
  .service('fetchData', function ($resource, $rootScope, myService) {
// AngularJS will instantiate a singleton by calling "new" on this function
return $resource(myService.getDomainUrl() + '/names.json', {
          query:{
              method: 'GET',
              cache: true
          }
      });
});

我收到以下错误: fetchData.fetchNames(...).success 不是函数

当我尝试处理调用此函数时的成功回调。请告诉我哪里出错了,以及处理 Angularjs.

中的 $resource 的正确方法是什么

查看文档:https://docs.angularjs.org/api/ngResource/service/$resource 正确的方法是

var t = $resource(...);
t.query(successCallback, errorCallback)

另请注意:

The $http legacy promise methods success and error have been deprecated. Use the standard then method instead. If $httpProvider.useLegacyPromiseExtensions is set to false then these methods will throw $http/legacy error.

$resource 是一个包装器。

声明为

var User = $resource('/user/:userId', {userId:'@id'});
var user = User.get({userId:123}, function() {
  user.abc = true;
  user.$save();
});

您可用的操作(调用方法)将是:

{ 'get':    {method:'GET'},
  'save':   {method:'POST'},
  'query':  {method:'GET', isArray:true},
  'remove': {method:'DELETE'},
  'delete': {method:'DELETE'} };

我假设(没有你使用的代码)你没有调用正确的方法。 例如

var resource = $resource(....);

并像

一样使用它
resource.query({params}, function(){/*your success callback*/})