如何在Angular中convert/escapeHTML?
How to convert/escape HTML in Angular?
^ 以上是 term.search_preview
在我的模板中呈现的内容。
当前 HTML:
<div class="term-context-preview" value="{{term.term}}">
<p ng-bind-html="term.search_preview">
{{term.search_preview}}
</p>
</div>
我已经 '$sce'
注入我的控制器:
.controller('TermsCtrl',
['$scope',
'$sce',
'TermsFactory',
function($scope,
$sce,
TermsFactory) {
//vm.terms = is the terms array of objects that gets repeated in my widgets
vm.terms = TermsFactory.getTermsModel();
这就是term.search_preview的由来,vm.terms是一个包含数百个对象的数组。其中一个对象的示例:
0: {
id: 1,
term: 'term',
search_preview: 'dsjfdsjkl dsfjdsk fjdksf dksj fdksj '
}
试过这个:
// Build terms widgets with ng-repeat:
vm.terms = $sce.getTrustedHtml(TermsFactory.getTermsModel());
console.log(vm.terms);
我得到的错误:
Error: [$sce:unsafe] Attempting to use an unsafe value in a safe context.
在我的 termsFactory 内部(我在其中处理和保存来自 JSON GET 调用的数据对象)
我遍历它们并在那里使用 $sce
创建了 trustAsHTML
的字符串
条款控制器:
// Set terms into data model:
TermsFactory.setTermsModel(data.data.ticker_tags);
// Build tag widgets with ng-repeat:
vm.terms = TermsFactory.getTermsModel();
vm.totalTerms = vm.terms.length;
console.log(vm.terms);
TermsFactory:(这个用来遍历一个对象,把items变成strings然后反馈到要返回的对象中)
// Set data to terms:
var setTermsModel = function(data) {
for (var i = data.length - 1; i >= 0; i--) {
data[i].search_preview = $sce.trustAsHtml(data[i].search_preview);
};
terms = data;
return terms;
};
然后在 HTML 文件中,使用 ng-bind-html
:
修复了输出
<p ng-bind-html="term.search_preview">{{term.search_preview | filter:term.search_preview : limitTo : 200}}</p>
<section ng-show="context" ng-bind-html="context" class="term-context">
<p>{{context}}</p>
</section>
^ 以上是 term.search_preview
在我的模板中呈现的内容。
当前 HTML:
<div class="term-context-preview" value="{{term.term}}">
<p ng-bind-html="term.search_preview">
{{term.search_preview}}
</p>
</div>
我已经 '$sce'
注入我的控制器:
.controller('TermsCtrl',
['$scope',
'$sce',
'TermsFactory',
function($scope,
$sce,
TermsFactory) {
//vm.terms = is the terms array of objects that gets repeated in my widgets
vm.terms = TermsFactory.getTermsModel();
这就是term.search_preview的由来,vm.terms是一个包含数百个对象的数组。其中一个对象的示例:
0: {
id: 1,
term: 'term',
search_preview: 'dsjfdsjkl dsfjdsk fjdksf dksj fdksj '
}
试过这个:
// Build terms widgets with ng-repeat:
vm.terms = $sce.getTrustedHtml(TermsFactory.getTermsModel());
console.log(vm.terms);
我得到的错误:
Error: [$sce:unsafe] Attempting to use an unsafe value in a safe context.
在我的 termsFactory 内部(我在其中处理和保存来自 JSON GET 调用的数据对象)
我遍历它们并在那里使用 $sce
创建了 trustAsHTML
条款控制器:
// Set terms into data model:
TermsFactory.setTermsModel(data.data.ticker_tags);
// Build tag widgets with ng-repeat:
vm.terms = TermsFactory.getTermsModel();
vm.totalTerms = vm.terms.length;
console.log(vm.terms);
TermsFactory:(这个用来遍历一个对象,把items变成strings然后反馈到要返回的对象中)
// Set data to terms:
var setTermsModel = function(data) {
for (var i = data.length - 1; i >= 0; i--) {
data[i].search_preview = $sce.trustAsHtml(data[i].search_preview);
};
terms = data;
return terms;
};
然后在 HTML 文件中,使用 ng-bind-html
:
<p ng-bind-html="term.search_preview">{{term.search_preview | filter:term.search_preview : limitTo : 200}}</p>
<section ng-show="context" ng-bind-html="context" class="term-context">
<p>{{context}}</p>
</section>