Как заставить PrismJS выделять кодовый блок в угловой директиве, не используя задержку в 1 секунду?

Я создал простое приложение (angular 1.6), которое позволяет пользователю сохранять там код и отображать его с подсветкой кода, используя prismjs. Единственная проблема заключается в том, что когда я вызываю Prism.highlightAll из директивы, мне приходится использовать метод angual $ timeout с задержкой в ​​одну секунду.

app.directive("markupPanels", function($timeout) {
return {
    restrict: "E",
    replace: true,
    templateUrl: "directives/markupPanel.html",
    link: function() {
        $timeout(function() {
            Prism.highlightAll();
        }, 1000)
    }
}

Код выделен с задержкой в ​​1 секунду

Однако браузер мерцает, и я думаю, что должен быть лучший способ сделать это.

1 ответ

Использование element.ready(),

link: function($scope, element) {
    element.ready(function() {
        Prism.highlightElement(element[0]);
    });
}

Источник: угловая призма.

Другие вопросы по тегам