首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS: ng-bind删除样式

AngularJS: ng-bind删除样式
EN

Stack Overflow用户
提问于 2015-03-09 12:20:43
回答 1查看 8.6K关注 0票数 8

在我的应用程序中,我使用的是tableng-repeat。我正在呈现我的数据,其中一列是在以下帮助下呈现的:

代码语言:javascript
复制
<div class="cell" data-ng-bind-html="article.Content">
</div>

但是我有一个问题,如果我有这样的内容:

代码语言:javascript
复制
<div class="page-wrap">123</div>

它打破了我的整个风格(因为页面也有页面包装)。

渲染html是真实的,但没有呈现样式和css样式吗?又是如何做到的?

像这样:

代码语言:javascript
复制
<div>123</div>
EN

回答 1

Stack Overflow用户

发布于 2015-03-09 13:01:06

我相信您的意思是,article.Content实际上包含了HTML,而这个角度正在去掉所有的HTML标记。

您的代码几乎可以得到您想要的内容,但是您需要使用$sce服务将其中的内容标记为“安全”。一个简单的方法是使用这个过滤器。

代码语言:javascript
复制
app.filter('trustAsHtml', function($sce) { return $sce.trustAsHtml; });

然后使用此筛选器删除类:

代码语言:javascript
复制
app.filter('stripClasses', function() {
  return function(str) {
    return str.replace(/class=['"].*["']/, '');
  }
});

.replace()函数从内容中删除任何class="whatever",我认为这正是您想要的。

更新:,类似地,它可以用于删除任何内联样式:

代码语言:javascript
复制
app.filter('stripStyles', function() {
  return function(str) {
    return str.replace(/style=['"].*["']/, '');
  }
});

(您需要将过滤器定义的app.部分更改为对应用程序起作用的任何部分。使用用于.controller()调用的任何前缀/方法。)

如果您有几个样式或类要删除,则应该选择正则表达式的非贪婪版本,即:

代码语言:javascript
复制
str.replace(/class=['"](.*?)["']/g, '')

然后将您的data-ng-bind-html="article.Content"更改为:

代码语言:javascript
复制
<div class="cell" data-ng-bind-html="article.Content | stripClasses | trustAsHtml"></div>

或者,对于类和样式的移除:

代码语言:javascript
复制
<div class="cell" data-ng-bind-html="article.Content | stripStyles | stripClasses | trustAsHtml"></div>

我为另一个答案做的这个普伦克展示了如何使用trustAsHtml过滤器,以及如何在控制器内使用$sce服务。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28941860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档