2015-07-31 4 views
2

Я пытаюсь понять, как ngResource в AngularJS может возвращать массив, но также позволяет добавлять $. $ Обещание на него, чтобы получить объект обещания.Как ngResource присоединяет обещание к массиву

В основном из приведенного ниже примера выглядит, если вы просто вызываете функцию запроса, вы возвращаете пустой массив (который заполняется, когда обещание разрешается).

Однако, похоже, что возвращаемое значение имеет свойство $ prom, к которому можно получить доступ. Это странно для меня, потому что я не уверен, как вы можете приложить обещание к массиву, просто к объекту. В javascript должно быть что-то, что мне здесь не хватает, и, может быть, вы можете уточнить.

например. с углового сайта:

// We can retrieve a collection from the server 
var cards = CreditCard.query(function() { 
    // GET: /user/123/card 
    // server returns: [ {id:456, number:'1234', name:'Smith'} ]; 

, но вы также можете получить доступ к необработанному $ HTTP обещания с помощью $ обещания собственности:

var User = $resource('/user/:userId', {userId:'@id'}); 
User.get({userId:123}) 
    .$promise.then(function(user) { 
     $scope.user = user; 
    }); 

угловато состояния дать массив $ обещания недвижимости какой-то образом?

+0

обещание и обратный вызов 2 разные вещи. Непонятно, что вы просите – charlietfl

+0

Привет @charlietfl, спасибо за проверку моего сообщения. Я не думаю, что я говорю о обратных вызовах, просто обещаю. Я попытаюсь добавить некоторые разъяснения в сообщение. – ThinkBonobo

ответ

1

ngResource возвращает пустой экземпляр Resource или Array для каждого метода. Оба экземпляра получают $ обещанные и $ разрешенные свойства, чтобы иметь возможность добавлять обещания или использовать результат непосредственно в вашей области $.

Если я правильно помню, что AngularJS использовал эти свойства, когда вы устанавливаете это значение в свойстве $ scope.

Есть больше библиотек, которые предоставляют настраиваемые методы Array (например, jQuery).

ngResource Источник:

возвращаемое значение:

https://github.com/angular/bower-angular-resource/blob/master/angular-resource.js#L562

обещание добавил:

https://github.com/angular/bower-angular-resource/blob/master/angular-resource.js#L637