$resource callback (error and success)

前端 未结 3 917
梦谈多话
梦谈多话 2020-12-02 20:16

I´m using AngularJS 1.1.3 to use the new $resource with promises...

How can I get the callback from that? I tried the same way I did with $http :

$re         


        
相关标签:
3条回答
  • 2020-12-02 20:47

    Two ways

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

    Other way

    var resource = $resource("");
    resource({}, function success(data){
    //do stuff
    }, function error(error){
    //do stuff
    }
    
    0 讨论(0)
  • 2020-12-02 20:49
    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
    }
    

    Also check out the example in docs: ngResource

    0 讨论(0)
  • 2020-12-02 20:56

    As of a PR on angulars resource and angular 1.2, angular will be switching to a simpler way of performing success / error checking. Instead of attaching callbacks or a $then method, both the Resource.get(..) and instance.get() will support the $promise method, which naturally returns a promise for both.

    As of angular 1.2 the $promise feature will go live: $promise changes

    Change your "get" request to be something along these lines (original example is on angularjs.org front page):

    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;
    });
    

    Somewhere else in the a controller you may instantiate a resource "Project" instance where you can use the same interface for successes and errors:

    var myProject = new Project();
    
    myProject.$get({id: 123}).
       .$promise.then(
          //success
          function( value ){/*Do something with value*/},
          //error
          function( error ){/*Do something with error*/}
       )
    
    0 讨论(0)
提交回复
热议问题