Здравствуйте.
Пишу одностраничное приложение на 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. Возможно кто-то сталкивался с подобной задачей?Ответ
Примерно следующее должно Вам помочь:
Директива:
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) { //... });
Комментариев нет:
Отправить комментарий