$resource回调(错误和成功)

$resource callback (error and success)

本文关键字:成功 错误 resource 回调      更新时间:2023-09-26

我正在使用AngularJS 1.1.3来使用新的$资源并承诺。。。

我如何从中获得回拨?我尝试了与$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');
 });

它总是打印"success,goted data",即使返回的是404。。。

知道吗?

感谢

从angular资源和angular 1.2上的PR开始,angular将切换到执行成功/错误检查的更简单方式。Resource.get(..(和instance.get((都将支持$promise方法,而不是附加回调或$then方法,后者自然会为两者返回promise。

从angular 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*/}
   )
var MyResource = $resource("/my-end-point/:action", {}, {
    getSomeStuff: { method:"GET", params: { action:"get-some-stuff" }, isArray: true },
    getSingleThing: { method:"GET", params: { action:"get-single-thing" }, isArray: false }
});
function MyController(MyResource) {
    var itemList = MyResource.getSomeStuff({}, function success() {}, function err() {});
    // will call: /my-end-point/get-some-stuff
    // will be array. each object is resource's instance
    var item = MyResource.getSingleThing({id:123}, function success() {}, function err() {});
    // will call: /my-end-point/get-single-thing?id=123
    // will be object. an instance of resource
}

还可以查看文档中的示例:ngResource

双向

var resource = $resource("");
resource.$promise.then(function(data){
// do stuff success
}, function(error){
//do stuff error
});

其他方式

var resource = $resource("");
resource({}, function success(data){
//do stuff
}, function error(error){
//do stuff
}