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, который запускает страницу. Насколько я знаю, важен только материал, имеющий отношение к приглашениям.
2 ответа
Я был идиотом и забыл, что добавил новую директиву в раздел приглашений, и, очевидно, она не работает так, как предполагалось. Вместо того, чтобы просто записывать данные в переменную передачи (invites.user), она перезаписывает всю переменную.
- Я думаю, что ваш JSON является недействительным -
userId
,users
,errorMsg
а такжеpending
не должны быть заключены в одинарные кавычки - они должны быть заключены в двойные кавычки. Так должно и имя пользователя. Пожалуйста, попробуйте жестко запрограммировать массив объектов, чтобы увидеть, работает ли ng-repeat. например
$scope.invites = { userID: null, users: [], errorMsg: null, pending: [ { userID: 1, username: "RhoVisions"}, { userID: 2, username: "AhotherUser"} ] };
Если все еще не работает, то проверьте, что ваше обещание $http выполнено? например, в
.then(function() { alert('hello') })
чтобы убедиться, что он успешно решен.- Обновите ваш вопрос фактической полезной нагрузкой, возвращаемой из вашего API.
- Можете ли вы показать нам свой полный код? Поскольку это немного сложно для отладки с количеством информации, которую вы предоставили нам. Может быть, ссылка на ваш Plnkr?
Я создал для вас plnkr, показывая, что он работает... http://plnkr.co/edit/9RvTgJbMZGuOFiosrMfT?p=preview