javascript - 在 AngularJS 中读取 JSON 会按原样打印 HTML 标签

标签 javascript json angularjs

这是JSFiddle文件我正在尝试让它工作。

我做了一个简单的过滤器来更改 \n从 JSON 到 <br> 的换行符在 HTML 中给出换行符,但它没有按预期工作。

问题是:在输出 <br> 中标签按原样显示,而不是由浏览器呈现为 line-break

到目前为止,我已尝试使用 $sce 制作新过滤器变量如

angular.module('myApp.filters', [])
  .filter('linebreak', function() {
    return function(text) {
        return text.replace(/\n/g, '<br>');
    }
})
.filter('to_trusted', ['$sce', function($sce){
            return function(text) {
                return $sce.trustAsHtml(text);
            };
        }]);

并将过滤器插入 ng-bind 中像:

<div ng-bind="data.para | linebreak | to_trusted"></div>

但这并不能解决问题。在这种情况下,有什么提示可以告诉浏览器
是 HTML 并将其呈现为换行符吗?

最佳答案

当您在 html 中使用 $sce 时,您必须使用 ng-bind-html 指令而不是 ng-bind:

<div ng-app="myApp">
    <div ng-controller="jsonCtrl">
        <div ng-repeat="data in textFile">
            <div ng-bind-html="data.para | linebreak | to_trusted">        </div>
      </div>
    </div>
</div>

You can see this working here

关于javascript - 在 AngularJS 中读取 JSON 会按原样打印 HTML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23782013/

相关文章:

javascript - jquery 如何找出 JSON 对象包含的内容

javascript - 我可以在代码库的任何地方用 "GET"替换 "POST"方法吗?

javascript 将 json 对象推送到数组

javascript - 如何在JSON中将上类别放在左侧?

AngularJS工厂双向数据绑定(bind)

javascript - 需要帮助将 Chart.js 图表添加到模态窗口(我正在使用 AngularJS)

angularjs - Karma (AKA Testacular) 依赖 ng-app 指令?

javascript - 使用 FormData 上传 AJAX 图片不在服务器端显示图片

javascript - 我如何从 JSON 中总结数字?

.net - Json.NET 的 JsonProperty 的 Converter 和 MemberConverter 属性的区别