Задать вопрос
@thekip
Php/C#/Js Developer

Почему AngularJs не рендерит список полученный из $resource?

Есть тестовая директива, которая рендерит список с помощью ng-repeat
filterApp.directive('test', function(){
     return {
        restrict: 'E',
        //require: '^ngModel',
        scope: {
            items: '='
        },
        template: "<select><option ng-repeat='item in items'>{{item.name}}</option></select>",
        link: function($scope, $element, $attrs) {
            
        }
     }
})

Шаблон
<test items="countryItems"></test>
Есть контроллер, который заполняет переменную countryItems, делая запрос к REST сервису:
$scope.countryItems = Countries.query();
На выходе получаем пустой список.

AngularJs имеет встроенный механизм упрощающий работу с асинхронными задачами. В данном случае он заполняет $scope.countryItems, пустым массивом, а как только данные придут, заполняет массив ими.
Теоретически после заполнения данными массива, ангуляр должен отловить это изменение и разослать всем подписчикам, т.е. перерендерить список. Но этого не происходит.

При этом если в функции link написать:
$scope.$watch('items', function(v) {
                console.log(v);
            }, true);

То видно, что в саму директиву обновленный массив таки доходит, но представление не перерисовывается.

Что я делаю не так?
  • Вопрос задан
  • 2530 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
maxaon
@maxaon
Все работает plnkr.co/edit/WFHMFMnqKM2MmCQ6tcNx Смотрите в другом месте
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы