【发布时间】:2014-03-29 10:17:47
【问题描述】:
我正在尝试构建一个语法高亮指令。
基本上是这样的指令:
<div syntax-highlight="language">{{codeValue}}</div>
应该变成:
<div syntax-highlight="language">
<pre><code>{{codeValue that has been syntax highlighted with span tags}}</code></pre>
</div>
所以我拥有的是:
return {
scope: {
'syntaxHighlight': '@'
},
template: '<pre><code ng-transclude></code></pre>',
transclude: true,
link: function (scope, element, attributes, controller, transclude) {
}
};
当这段代码当前运行时,{{codeValue}}(基本上是一个字符串)中的所有内容都会被放入<code ng-transclude></code>,同时被包装在span 元素中。
这不好,因为我不只是想要code 元素内的字符串。我需要在被嵌入之前修改这个值。
我需要将此{{codeValue}} 传递给语法高亮函数,该函数将返回语法高亮代码,该代码将是原始 HTML(因此原始字符串(经过净化和转义)会变成带有 span 标签的 HTML)。然后需要将这个原始 HTML 放入 code 元素中。
我尝试过使用 transclude 功能,但内容似乎已经被嵌入了。
【问题讨论】:
-
我假设您在链接函数中调用语法高亮函数?你不能只附加到其中的元素吗?
标签: javascript angularjs