ng-bind-html and highlight.js
ng-bind-html and highlight.js
我正在尝试为动态添加的html中的所有代码元素高亮显示语法,该html将使用ng-bind-html添加到当前页面。
<div ng-repeat="activity in activities">
<h3>{{activity.title}}</h3>
<div ng-bind-html="activity.text">
</div>
</div>
activity.text
变量包含如下内容:
<p>This is a paragraph with some code following.</p>
<pre><code class="lang-python">
s = "Python syntax highlighting"
print s
</code></pre>
<p>some other HTML elements </p>
到目前为止,这是有效的,但没有语法突出显示。所以我添加了高光和棱角分明的高光。我已将<div ng-bind-html="activity.text">
更改为<div hljs ng-bind-html="activity.text">
现在的问题是,将ng-bind-html和hljs指令组合在一起并不能按预期工作。它不向代码标记(预编码)添加语法高亮,而是向整个html内容添加语法高亮。
有没有更好的方法可以为动态添加的内容突出显示语法?
我通过在服务器端添加语法高亮显示来解决问题(因为我也在服务器端进行降价翻译)。我使用nodejs和expressjs框架作为后端。
获取活动时,我通过查询参数激活highlightjs(例如GET/activities?hljs=true)。对于每个活动,我调用以下函数(它还不是完全干净的代码,但它可以工作):
var cheerio = require('cheerio');
var hljs = require('highlight.js');
// ... express routes ...
var highlightPreCodeElements = function (htmlText) {
var $ = cheerio.load(htmlText);
$('pre code').each(function(i, block) {
if ($(this).attr('class') && $(this).attr('class').slice(0, 4) === 'lang') {
var indexOfMinus = $(this).attr('class').indexOf('-');
var language = $(this).attr('class').substr(indexOfMinus + 1);
$(this).html(hljs.highlight(language, $(this).text()).value);
}
});
return $.html();
};
正如您所看到的,我正在nodejs和highlight.js(npm install highlight.js
)中使用cheerio(npm install cheerio
)用于jQuery-API。
在客户端,我只引用highlightjs样式表,仅此而已。
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 使用agility.js进行页面布局和合成
- 使用Clipboard.js复制span文本
- Highlight.js为每个<代码>标签
- 如何将highlight.js与Rails结合使用
- 尝试将highlight.js集成到一个使用requirejs的angular应用程序中
- ng-bind-html and highlight.js
- 显示C#<摘要>使用Highlight.js的Jekyll Github页面中的标记
- window.open、源代码查看器和highlight.js
- Highlight.js and IE8 error
- jQuery highlight.js modification
- AngularJS和Highlight.js的动态语法高亮显示
- jQuery current-menu-item-highlight与js anylink菜单串联
- 如何在使用highlight.js时指定语言
- 如何使highlight.js在一个页面中的多个数据表中工作
- 在ember中使用highlight.js
- 为非预容器配置highlight.js
- 如何在highlight.js中使用timymce
- 使用wicked_pdf时,在Heroku中没有正确转义Highlight.js
- Highlight a specific part in <textarea> using JS