2013-06-09 3 views
0

Я следующий контроллер:я не могу получить индексированный элемент из моих AngularJS ресурсов

.controller('AppCtrl', function AppCtrl ($scope, $location, $resource) { 
    var Card = $resource('http://localhost/card/:cardId', 
     { 
     'cardId': "@_id" 
     }, 
     { 
     getAll: { 
     method: 'GET', 
     transformResponse: function (data) { 
      return angular.fromJson(data)._items; 
     }, 
     isArray: true 
     } 
    }); 

    $scope.allCards = Card.getAll(); 
    console.log($scope.allCards); 
    console.log($scope.allCards[0]); 

Теперь на консоли, две печатные линии показывают:

[$resolved: false, $then: function] 
    > 0: c 
    > 1: c 
    > 2: c 
    > 3: c 
    > 4: c 
    > 5: c 
    > 6: c 
    > 7: c 
    > 8: c 
    > 9: c 
    > 10: c 
    > 11: c 
    > 12: c 
    > 13: c 
     $resolved: true 
    > $then: function (callback, errback) { 
     length: 14 
    > __proto__: Array[0] 

в качестве значения из $ scope.allCards, но «undefined» в качестве значения $ scope.allCards [0]. Я могу передать $ scope.allCards в ng-repeat, но хочу выделить элементы по индексу и предположить, что я получу массив, с которым я мог бы это сделать.

Каким объектом является мой метод возврата карты, и как мне получить массив?

+0

Я ищу, чтобы иметь доступ к массиву 14-элемент, который, как представляется, быть там. – Chris2048

+0

Возможно, это возвращает реальное обещание – Ven

+0

Вот оно. Извините, я довольно новичок в JS, ничего не знаю о обещаниях ... – Chris2048

ответ

1

isArray: true методы вернут вам обещание, вы не можете действовать на них напрямую.

Вы можете передать ему функцию.

var cards = Card.getAll(function() { cards[0]; });

Смежные вопросы