使用指令突出显示指令输出的<code>
标记以呈现<markdown>
标记。
问题是<code>
指令在<markdown>
指令运行后永远不会被命中。但是<code>
指令运行在未从<markdown>
指令输出的代码标记上。
Markdown指令
angular.module('App').directive "markdown", ->
converter = new Showdown.converter()
scope: true
restrict: 'E'
link: (scope, element, attrs) ->
if attrs.markdown
scope.$watch attrs.markdown, (newVal) ->
html = converter.makeHtml(newVal)
element.html(html)
else
redraw = ->
html = converter.makeHtml(element.text())
element.html(html)
#### expecting the code directive to be trigger after this.
scope.$on "$includeContentLoaded", redraw
redraw()
有什么想法吗?
答案 0 :(得分:1)
AngularJS不知道从你的降价中编译任何东西。有两种方法可以编译这些东西。一种方法是使用transclusion,但我认为这不适用于您的用例。在您的情况下,您需要从降价处编译更改。为此,您使用Angular的$ compile服务。
首先,将$compile
服务注入您的指令。然后设置element.html(html)
后,请尝试以下操作:$compile(element.contents())(scope);