$ resource callback (ошибка и успех)

Я использую AngularJS 1.1.3 для использования нового $ресурса с 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...

Любая идея?

Спасибо

Ответ 1

По сравнению с PR на ресурсе углов и angular 1.2, angular будет переключиться на более простой способ выполнения успеха/проверка ошибок. Вместо привязки обратных вызовов или метода $then оба ресурса Resource.get(..) и instance.get() будут поддерживать метод $prom, который, естественно, дает обещание для обоих.

Начиная с angular 1.2 функция $обедается вживую: $обещает изменения

Измените свой запрос "получить" на что-то в этом направлении (исходный пример находится на первой странице 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;
});

Где-то еще в контроллере вы можете создать экземпляр ресурса "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*/}
   )

Ответ 2

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 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