Javascript AngularJS使用$sce.trustAsHtml和ng repeat
我正在尝试将$sce.trustAsHtml()与ng repeat中对象的属性一起使用。结果是HTML完全为空。但HTML使用Ngsanize正确输出Javascript AngularJS使用$sce.trustAsHtml和ng repeat,javascript,angularjs,angularjs-ng-repeat,ng-bind-html,ngsanitize,Javascript,Angularjs,Angularjs Ng Repeat,Ng Bind Html,Ngsanitize,我正在尝试将$sce.trustAsHtml()与ng repeat中对象的属性一起使用。结果是HTML完全为空。但HTML使用Ngsanize正确输出 <div ng-repeat="question in questions"> <p ng-bind-html="$sce.trustAsHtml(question.body)"> </p> </div> 顺便说一下,我正在使用AngularJS v1.3.0-beta.
<div ng-repeat="question in questions">
<p ng-bind-html="$sce.trustAsHtml(question.body)">
</p>
</div>
顺便说一下,我正在使用AngularJS v1.3.0-beta.3。不确定是否存在错误或我做错了什么。您不能在表达式中使用
$sce.trustAsHtml
(除非$sce
是$scope
上的属性),因为表达式是在$scope
的上下文中计算的
最干净的方法是使用ngSanitize
第二个最干净的方法是将
$sce.trustAsHtml
作为$scope
中的函数公开:
<div ng-repeat="...">
<p ng-bind-html="trustAsHtml(question.body)"></p>
</div>
$scope.trustAsHtml = $sce.trustAsHtml;
$scope.trustAsHtml=$sce.trustAsHtml;
或具有过滤器:
angular.module('myApp')
.filter("sanitize", ['$sce', function($sce) {
return function(htmlCode){
return $sce.trustAsHtml(htmlCode);
}
}]);
在html中:
<div ng-bind-html="question.body | sanitize"></div>
谢谢您的解释。在服务中使用$sce时遇到问题-只在过滤器和方向上工作这正是我想要的,而且它简短、简单、甜美。谢谢在控制器中使用$sce.trustAsHtml(questions)
并仅使用
如何@HardikMishra,这也是可能的(而且比把它放在模板中要好),它不会为我清理htmlCode