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