compile directive inside directive AngularJS

匿名 (未验证) 提交于 2019-12-03 10:24:21

问题:

I am trying to use a HighlightJS directive on <pre> blocks rendered by a Markdown directive.

Here is an plunker recreating the problem:
http://plnkr.co/edit/qZlMkjNZglV453caNphy?p=preview

In this example:

<btf-markdown> #Markdown directive <pre hljs>      angular.forEach($scope.items,function(item){       console.log(item);     }); </pre> </btf-markdown>

I would expect the <pre> block to get parsed by hljs but does not.

Do I have to manually invoke the compilation of the inner directive?

回答1:

Within btford.markdown your element.html(html); is overwriting the hljs

So instead of:

var html = converter.makeHtml(element.text()); element.html(html);

I think you'd prefer:

var html = converter.makeHtml(element.html()); element.html(html);

switching element.text() with element.html()

So you're converting the whole html element (including your hljs - which isn't in element.text()).

Here's the updated plunker: http://plnkr.co/edit/cURJ1QRfJRheOxTvYc1p?p=preview



回答2:

I would like to point out Angular Marked, which is based on btford work.

  • You can use it as a service, which means you can parse strings in controllers, directives, for subsequent processing,
  • It supports some Github Flavored Markdown, which allows for easy table creation, see here.


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!