$ sce.trustAsHtml无效

时间:2014-06-27 22:23:06

标签: angularjs

好吧,以下我在代码中测试的内容如下:

的javascript:

var string = '<p>hello</p>';
$scope.html = $sce.trustAsHtml(string);

HTML:

<span ng-bind-html="html"></span>

我真正想要做的是:从JSON格式的服务器中提取一堆项目。其中一个JSON的密钥叫做“description”,它只是一长串html代码。

我正在将这些项目推送到$ scope数组中,以便我可以通过ng-repeat指令在页面上显示它们。下面的代码总结了它是如何完成的:

的javascript:

$.getJSON('someURL', function(data) {
    $scope.items = [];
    for (var i = 0; i < data.count; i++) {
        var item = {};
        item.description = $sce.trustAsHtml(data.item[i].description);
        $scope.items.push(item);
    }
});

HTML:

<p ng-repeat="item in items">
    <span ng-bind-html="item.description"></div>
</p>

由于某种原因,这不会产生任何输出。我读到的东西是,无论你绑定$ sce.trustAsHtml()的变量必须是$ scope变量。在这种情况下,我将它设置为常规变量“item.description”,然后将其添加到$ scope.item数组。

我怀疑这可能是它无法正常工作的原因,但我不知道如何修复它。

任何人都可以帮忙吗?

谢谢!

2 个答案:

答案 0 :(得分:8)

尝试<span ng-bind-html="'{{item.description}}'"></span>

这样的事对我有用。

答案 1 :(得分:7)

使用AngularJS 1.4.9,它对我有用:

控制器:

.controller('MyCtrl', ['$scope', '$sce',
    function($scope, $sce) {
        $scope.infoText = $sce.trustAsHtml('My <strong>HTML text</strong>');
    }
])

模板:

<span ng-bind-html="infoText"></span>