我創建了一個AngularJS 1.2 過濾使用該ShowdownJS解析降價內容轉換成HTML:
App.filter('markdown', function($sce) {
var converter = new Showdown.converter();
return function (value) {
var html = converter.makeHtml(value);
return $sce.trustAsHtml(html);
};
});
在模板的結合與NG綁定,HTML完成。這一次接收到最終的HTML內容,所以它是強制性的,以展示內容:
<div ng-bind-html="post.content | markdown"></div>
的過濾器的工作原理,但我得到的控制檯這個錯誤,因爲它返回$ SCE服務它SHOULD回報只是解析的HTML字符串。
10 $digest() iterations reached. Aborting!
我怎樣才能避免這種情況的過濾?我找不到任何方法可以從$ sce服務中提取轉義的html。
編輯:如果我禁用配置中的清理服務,即使代碼保持完全相同,也不會收到此錯誤。
$sceProvider.enabled(false);
首先使用http://docs.angularjs.org/api/ng.$rootScopeProvider將digestTtl限制設置爲更高的值。你可以執行11次迭代。但我不會去高於20-25 –
過濾器返回$ sce服務..它應該返回字符串..這是我的問題..增加ttl並不能解決這個問題 – esgy
看來這將被固定在1.2 http ://www.github.com/angular/angular.js/issues/3932不需要緩存值 –