一尘不染

$ resource回调(错误和成功)

angularjs

我正在使用AngularJS 1.1.3将新的$ resource与promises一起使用…

我如何从中获得回调?我尝试使用与$ http相同的方法:

$resource.get('...').
  success(function(data, status) {
      alert(data);
   }).
   error(function(data, status) {
      alert((status);
   });

但是没有“成功”也没有“错误”功能…

我也尝试过:

$resource.get({ id: 10 },function (data) {
   console.log('success, got data: ', data);
 }, function (err) {
   alert('request failed');
 });

即使返回的是 404 ,也总是打印“成功,有数据” 。

任何想法?

谢谢


阅读 248

收藏
2020-07-04

共1个答案

一尘不染

从角度
资源
和角度1.2 的
PR开始
,角度将切换为执行成功/错误检查的更简单方法。无需附加回调或$ then方法,Resource.get(..)和instance.get()都将支持$
promise方法,该方法自然会为这两者返回一个承诺。

从1.2版本开始,$ promise功能将启用: $
promise更改

将您的“获取”请求更改为类似以下内容(原始示例在angularjs.org主页上):

factory('Project', function($resource) {
  var Project = $resource('https://api.mongolab.com/api/1/databases' +
      '/youraccount/collections/projects/:id',
      { apiKey: 'yourAPIKey' }, {
        update: { method: 'PUT' }
      }
  );

  Project.prototype.update = function(cb) {
    return Project.update({id: this._id.$oid})
      .$promise.then(
        //success
        function( value ){/*Do something with value*/},
        //error
        function( error ){/*Do something with error*/}
      )
  };

  Project.prototype.destroy = function(cb) {
    return Project.remove({id: this._id.$oid})
      .$promise.then(
        //success
        function( value ){/*Do something with value*/},
        //error
        function( error ){/*Do something with error*/}
      )
  };

  return Project;
});

在控制器中的其他位置,您可以实例化资源“项目”实例,在该实例中,您可以使用相同的接口进行成功和错误操作:

var myProject = new Project();

myProject.$get({id: 123}).
   .$promise.then(
      //success
      function( value ){/*Do something with value*/},
      //error
      function( error ){/*Do something with error*/}
   )
2020-07-04