Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS使用$sce.trustAsHtml和ng repeat_Javascript_Angularjs_Angularjs Ng Repeat_Ng Bind Html_Ngsanitize - Fatal编程技术网

Javascript AngularJS使用$sce.trustAsHtml和ng repeat

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.

我正在尝试将$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.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