我在这个问题上苦苦挣扎了很长一段时间,并想在这里插话,尽管比其他人晚得多(但实际上,2017 年末谁还在使用 AngularJS?这个人。)我的具体用例是我有代码的地方( xml) 被动态加载到需要反复打印的页面上。
该指令将把你的代码作为一个属性,prettyprinted
在你运行之后删除添加到元素中的类prettyPrint()
。它将监视父范围内输入代码的更改,并在发生更改时再次运行代码。
唯一的依赖是你有谷歌的代码美化。我让它自托管,因此PR.prettyPrint()
(按照 2017 年 9 月的文档中的说明)。
该指令完全封装了动态内容所需的 Google 代码美化功能。
angular.module('acrSelect.portal.directives')
.directive('prettyPrint', ['$timeout', function($timeout) {
return {
restrict: 'E',
scope: {
'code': '=',
},
template: '<pre ng-class="{prettyprint: code}">{{ code }}</pre>',
link: function (scope, element, attr) {
scope.$watch('code',function(){
$timeout(function() {
//DOM has finished rendering
PR.prettyPrint();
element.find(".prettyprint").removeClass("prettyprinted");
});
});
}
}
}
]);
父模板中的 html 可能看起来
<pretty-print code="selectedCode" ng-show="codeIsSelected"></pretty-print>
希望这可以帮助另一个可怜的灵魂!