2013-04-08 2 views
4

У меня возникла проблема с AngularJS с отключением директивы, когда ng-repeat завершил обновление. У меня есть три именованных массива, которые переключаются по трем ссылкам, позволяя отображать выбранный массив с помощью ng-repeat. Я хотел бы отключить некоторый код, когда он закончен, поскольку я планирую установить некоторые атрибуты элементов для использования D3.Директива после обновления ngRepeat

Я попытался проверить область действия. $ Last в моей директиве, но это не вызывается в конце каждого процесса ng-repeat. Если некоторые данные остаются неизменными, он может не устанавливать область действия. $ Last to true.

http://plnkr.co/edit/hwmOlI6YrgS4H1C1h7k2?p=preview

Итак, что это лучший способ для запуска кода в директиве, когда нг повтора закончил?

+0

Куда направляется эта директива? Можете ли вы обновить планку с помощью директивы? Я знаю, что нужно идти внутрь ng-repeat. Если вы можете обновить планку с помощью директивы, это упростит решение вашей проблемы. – ganaraj

+0

Обновленный plunk с более очевидным именем, он был там как атрибут test = "" на элементе li. Переименовал его в testdirective, чтобы он выделялся больше. –

+0

Простите, мой плохой :) – ganaraj

ответ

10

Это решение для вас. Обратите внимание, что последние триггеры каждый раз теперь.

http://plnkr.co/edit/xV1quqzorzxliS2shrP4?p=preview

Вам просто нужно $watch переменная $ last, и он будет работать нормально. Это помогает в ситуациях, когда scope не создается, а просто обновляется новыми значениями. Ваша директива создается один раз, и если одна из повторяющихся переменных просто меняет значения, ng-repeat оптимизирует и просто обновляет значения (в отличие от удаления всех значений и повторного создания новых). В этом случае $scope.$last будет обновленной переменной, а не тем, что получает «созданный». Итак, вам нужно будет $watch.

+0

Это сработало, спасибо :) Моя единственная проблема в том, что иногда d3 захватывает атрибут данных, и он по-прежнему имеет {{data.changerate}} вместо значения (например, 20) , Большую часть времени, хотя он был разобран и значение возвращается. Есть предположения? –

+0

Я не совсем уверен, где и в каком сценарии вы пытаетесь это сделать, но если вы делаете

Тогда вы можете получить значение этого атрибута, выполнив attrs. $ Наблюдать (data-someattrib, function (newValue) { }); – ganaraj

+0

Что-то в этом роде. Проверьте http://plnkr.co/edit/aSXs6mGgQmvpGCL1i1IZ. Я передал данные консоли D3. Если вы переключаетесь со страницы «один» на «два», вы увидите {{reference [id] .count}} в массиве из некоторых записей. Не знаете, как совместить наблюдение с d3. –

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