【问题标题】:AngularJs - html renderingAngularJs - html 渲染
【发布时间】:2023-03-26 16:45:01
【问题描述】:

我们使用弹性搜索荧光笔并从荧光笔中获取以下代码。

<span style='font-weight:bold;color:red;'>Baskar</span> Test

我们在html中显示结果如下。

                     <tr
                        ng-repeat="result in searchModelResult">                        
                        <td><p ng-bind-html="result.name"></p></td>                     
                    </tr>

我已经包含了 sanitize.js 并在 Angular 模块中添加了 ngSanitize。我仍然没有看到像红色字体和粗体字体这样的 html 效果。

我有什么遗漏吗?

谢谢, 巴斯卡尔.S

【问题讨论】:

    标签: html angularjs highlighting


    【解决方案1】:

    你需要做两件事,首先删除

    {{result.name}}
    

    正如丹尼尔所说...那么您需要对 angular 说以信任控制器中的该 html:

    myApp.controller('MyCtrl', function ($scope, $sce) {
        $scope.result.name = $sce.trustAsHtml('<span style="font-weight:bold; color:red;">Baskar</span> Test');
    });
    

    可以查看$scehere的完整文档

    如果您需要在 ng-repeat 中进行迭代,您可以创建一个过滤器:

    myApp.filter('unsafe', function($sce) { return $sce.trustAsHtml; });
    

    然后在视图中使用:

    <tr ng-repeat="result in searchModelResult">                        
        <td><p ng-bind-html="result.name | unsafe"></p></td>                     
    </tr>
    

    【讨论】:

    • 嗨,我正在获取一个列表并在 html 中使用 ng-repeat 进行迭代。我应该迭代控制器中的列表并为每个元素添加 $sce.trustAsHtml 吗?
    • 不一定,你可以像克里斯在这个链接中所说的那样创建一个过滤器:stackoverflow.com/questions/18340872/… 看到第二个答案(一个女巫有 306 分)。如果您需要示例,请告诉我。
    • @user1578872 我在答案上举了一个例子。
    【解决方案2】:

    您需要删除第二个绑定表达式:

    {{result.name}}
    

    它看起来覆盖了来自ng-bind-html 的绑定,并且默认绑定将HTML 转义字符串。

    【讨论】:

    • 我试过这个。现在,我没有看到 html 标签。但我没有看到 html 效果。文本颜色仍然是正常颜色,不是红色,也不是粗体。
    猜你喜欢
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2014-09-10
    相关资源
    最近更新 更多