javascript - 如何允许特定的 html 实体在 ng-repeat 中显示,同时清理其余实体?

标签 javascript html angularjs

因此,对于这个示例,我有一个使用 $http 检索的字符串列表,这些字符串可以连续包含多个空格,为了正确显示,我需要将字符串替换为 nbsp html 实体。对用户提供的字符串进行清理也很重要。什么是最简单的方法来保持 $sce 启用到字符串被正确清理的位置,但完成之后,用 nbsp 实体替换任何空格并使其正确显示,而不是作为文字 nbsp?

我组装了一个jsfiddle。我正在尝试使带有 Hello 的字符串和单词中的一组空格按原样显示,但我不希望 b 实体标记以实际粗体显示,我希望它被清理/转义并且像平常一样显示为文本 html 标签。

http://jsfiddle.net/J4nRK/40/

<div ng-app='myApp' ng-controller="Controller">
<ul>
   <li ng-repeat="item in items" ng-bind-html="item | includespaces">
       <!--{{ item }}-->
   </li>
</ul>

var app = angular.module('myApp', []);
app.controller('Controller', function ($scope, $sce) {
    // Assume this is data from $html.
    $scope.items = ['He       llo', 'Testing<b>bold</b>', 'bleh'];
});

app.filter('includespaces', ['$sce', function ($sce) {
    return function (text) {

        //return $sce.getTrustedHtml(text);
        return $sce.trustAsHtml(text.replace(/ /g, "&nbsp;"));
    }
}]);

最佳答案

也许使用pre?根本不需要过滤器。

<li ng-repeat="item in items">
  <pre ng-bind="item"></pre>
</li>

imgur

关于javascript - 如何允许特定的 html 实体在 ng-repeat 中显示,同时清理其余实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32326658/

相关文章:

php - 带有 php 后端的 AngularJS 应用程序上的 Facebook 身份验证

javascript - 如何将字符串渲染为自定义 React 组件?

javascript - 如何维护 Bootstrap 选项卡上的分页?

html - 在 span 中对之前的字体大小进行动画处理并保持 span 文本的位置

javascript - 嵌入 PDF,无需工具栏和滚动条。为什么这不起作用?

javascript - Angularjs:在http请求 header 上设置授权

javascript - ng-repeat 被注释并且不显示 JSON 对象的结果

javascript - ES6中如何设置单选按钮的selected属性

javascript - 路由防护中的 Angular 2 对话框可以停用

javascript - CSS 和 JavaScript 不会在悬停时按预期切换