0

Я использую код от AngularJS implementation of ScrollSpy (original article here), но столкнулся с проблемой, когда моя навигация динамически создана, но она работает, когда навигация статически создана.

У меня есть директива scrollSpy, которая следит за списком spies. Список spies - это в основном список навигационных элементов, которые он должен выделить, когда пользователь прокручивает страницу. spies добавляются через addSpy метод в контроллере scrollSpy как так

controller: function ($scope) { 
    $scope.spies = []; 
    return this.addSpy = function (spyObj) { 
     return $scope.spies.push(spyObj); 
    }; 
}, 

addSpy функция всегда вызывается, однако, когда я добавляю соглядатаев динамически за $ часы для этого списка никогда не увольняют, это уволят, когда навигационные элементы статически создаются.

link: function (scope, elem, attrs) { 
    scope.$watch('spies', function (spies) { 
     // I never get called when spies are added dynamically, even 
     // though spies are added to the $scope.spies object in the controller! 
    } 

Может ли кто-нибудь помочь мне понять, почему часы $ watch не срабатывают? Я попробовал добавить $scope.$apply, но он сказал, что он уже находится в цикле дайджеста.

ответ

1
scope.$watch('spies', function (spies) { 
    // I never get called when spies are added dynamically, even 
    // though spies are added to the $scope.spies object in the controller! 
}, true); 

Вы должны лавировать на ,true в конце, как вы не изменяя ссылку, просто обновить его.

+0

Отлично, спасибо – Chris