#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) { //... });
Комментариев нет:
Отправить комментарий