我在 AngularJS 1.2 中创建了一个过滤器,它使用ShowdownJS将Markdown内容解析为 HTML:
App.filter('markdown', function( $sce ) {
var converter = new Showdown.converter();
return function (value) {
var html = converter.makeHtml(value);
return $sce.trustAsHtml(html);
};
});
模板中的绑定是使用ng-bind-html完成的。这个接收到最终的 HTML 内容,因此必须显示内容:
<div ng-bind-html="post.content | markdown"></div>
过滤器有效,但我在控制台中收到此错误,因为它返回 $sce 服务并且它应该只返回已解析的HTML 字符串。
10 $digest() iterations reached. Aborting!
如何在过滤器中避免这种情况?我找不到任何可以从 $sce 服务中提取转义 html 的方法。
编辑:如果我在配置中禁用清理服务,即使代码保持完全相同,我也不会收到此错误。
$sceProvider.enabled(false);