ng-repeat не перебирает подобъект

У меня есть переменная, которую я создаю как

$scope.invites = { 'userID': null, 'users': [], 'errorMsg': null, 'pending': [] };

В запросе API я установил $scope.invites.pending к массиву объектов, например:

[{ userID: 1, username: 'RhoVisions'}]

Когда я использую нг-повтор в жизни

<li ng-repeat="invite in invites.pending | orderBy: 'username'">

Я ничего не получаю. Осмотр показывает, что ничто никогда не будет оказано. Если я изменю переменную из $scope.invites.pending в $scope.invitesPending, это работает просто отлично, и я не могу понять проблему.

Сначала я подумал, что, может быть, это из-за способа поступления данных, поэтому я попытался перебрать возвращенные данные и отправить их в $scope.invites.pendingМама на удачу. Я также попытался добавить track by $index по велению друга, который тоже не работал.

Я попытался создать PLNKR, но он прекрасно работает с PLNKR. Я должен представить, что это как-то связано с моим кодом, или как данные поступают из API, но я понятия не имею, что делать. Я могу изменить его на базовую переменную, но ради организации и обучения я хотел бы выяснить, что происходит.

Поскольку для этого требуются API, я не могу настроить работающий plnkr, но я поместил соответствующий выходной HTML, а также полный файл JS, который запускает страницу. Насколько я знаю, важен только материал, имеющий отношение к приглашениям.

http://plnkr.co/edit/3lh2MT1JHzOeN0baR3BO

2 ответа

Я был идиотом и забыл, что добавил новую директиву в раздел приглашений, и, очевидно, она не работает так, как предполагалось. Вместо того, чтобы просто записывать данные в переменную передачи (invites.user), она перезаписывает всю переменную.

  1. Я думаю, что ваш JSON является недействительным - userId, users, errorMsg а также pending не должны быть заключены в одинарные кавычки - они должны быть заключены в двойные кавычки. Так должно и имя пользователя.
  2. Пожалуйста, попробуйте жестко запрограммировать массив объектов, чтобы увидеть, работает ли ng-repeat. например

    $scope.invites = { userID: null, users: [], errorMsg: null, pending: [ { userID: 1, username: "RhoVisions"}, { userID: 2, username: "AhotherUser"} ] };

  3. Если все еще не работает, то проверьте, что ваше обещание $http выполнено? например, в .then(function() { alert('hello') }) чтобы убедиться, что он успешно решен.

  4. Обновите ваш вопрос фактической полезной нагрузкой, возвращаемой из вашего API.
  5. Можете ли вы показать нам свой полный код? Поскольку это немного сложно для отладки с количеством информации, которую вы предоставили нам. Может быть, ссылка на ваш Plnkr?

Я создал для вас plnkr, показывая, что он работает... http://plnkr.co/edit/9RvTgJbMZGuOFiosrMfT?p=preview

Другие вопросы по тегам