Страницы

Поиск по вопросам

воскресенье, 15 марта 2020 г.

Как вызвать функцию после отрисовки ng-repeat?

#javascript #angularjs


Здравствуйте.
Пишу одностраничное приложение на angularjs, где по клику по ссылке с помощью ajax
получаю данные с сервера. Полученные данные выводятся с помощью ng-repeat. Проблема
в том, что я использую скрипты для подсветки кода в html и для того, чтобы эта подсветка
появилась, необходимо вызвать функцию, которая и обновляет эти стили. 

Например, у меня есть 
code
После полной загрузки страницы вызывается $("pre.java").snippet("java"), но если попробовать вызвать ее после получения ответа по ajax, то она вызывается именно после получения, а не отрисовки на странице. Моя директива: app.directive("file", function() { return { restrict : "E", scope : true, controller : function($scope, $element) { $scope.fileName = $scope.file.fileName; $scope.fileContent = $scope.file.content; }, link : function(scope, el, attr) { scope.fileName = scope.fileName; scope.fileContent = scope.fileContent; }, template : "

name: {{fileName}}

content: {{fileContent}}
" } }); Пробовал вызывать по условию $last. Функция отрабатывает, добавляет свои классы в блоку
, но после этого не происходит замена fileContent. Возможно кто-то сталкивался
с подобной задачей?
    


Ответы

Ответ 1



Примерно следующее должно Вам помочь: Директива: app.directive('onFinishRender', function ($timeout) { return { restrict: 'A', link: function (scope, element, attr) { if (scope.$last === true) { $timeout(function () { scope.$emit('ngRepeatFinished'); }); } } } }); HTML
{{item.name}}}
Если необходимо получить доступ к событию из контроллера: $scope.$on('ngRepeatFinished', function(ngRepeatFinishedEvent) { //... });

Комментариев нет:

Отправить комментарий