[AngularJS] Html ngSanitize, $sce

Safely render arbitrary HTML snippets by using ngSanitize and $sce.

By default angularJS consider user‘s input html is danger, so if you want to display html tag on the page will show unsafe error.

To remove this error and trust user‘s input, we can install ngSanitize:

bower install angular-sanitize
var egghead = angular.module("egghead", ["ngSanitize"]);

egghead.controller("AppCtrl", function () {
    var app = this;

    app.someHtml = ‘<a href="http://egghead.io" style="color:red">Learn stuff!</strong>‘;
});
<!DOCTYPE html>
<html>
<head>
    <title>Egghead.io</title>
    <link rel="stylesheet" href="bower_components/bootstrap.css/css/bootstrap.css"/>
</head>
<body ng-app="egghead" ng-controller="AppCtrl as app">
<textarea name="" id="" cols="30" rows="10" ng-model="app.someHtml"></textarea>
<div ng-bind-html="app.someHtml"></div>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-sanitize/angular-sanitize.js"></script>
<script src="app.js"></script>
</body>
</html>

Then the error message has gone, but we didn‘t get the result which we want, we want "Learn stuff" shown  in red color:

<a href="http://egghead.io" style="color:red">Learn stuff!</strong>

To overcome this, we can use $sce service:

var egghead = angular.module("egghead", ["ngSanitize"]);

egghead.controller("AppCtrl", function ($sce) {
    var app = this;

    app.someHtml = $sce.trustAsHtml(‘<a href="http://egghead.io" style="color:red">Learn stuff!</strong>‘);
});

Also you can trust as javascript, css && url:

see here: https://docs.angularjs.org/api/ng/service/$sce

时间: 2025-01-02 03:23:27

[AngularJS] Html ngSanitize, $sce的相关文章

Angularjs 常用服务 $http $location $anchorScroll $cacheFactory $timeout $interval $sce

Angularjs 常用服务 $http $location$anchorScroll $cacheFactory $timeout $interval $sce学习要点:1. Angularjs 中的 $http 服务2. Angularjs 中的 $location $anchorScroll 服务3. Angularjs 中的 $cacheFactory 服务4. Angularjs 中的 $timeout $interval 服务5. $sce 服务 浏览器简析 html 标签1. An

前端安全(XSS、CSRF防御)

一.网络安全 OWASP:开放式Web应用程序安全项目(OWASP,Open Web Application Security Project) OWASP是一个开源的.非盈利的全球性安全组织,致力于应用软件的安全研究.http://www.owasp.org.cn/ 二.XSS攻击 1.总述 2.XSS攻击原理 XSS攻击(Cross-Site Scripting)跨站脚本攻击. 被OWASP评为十大安全漏洞中的第二威胁漏洞. 特点:能注入恶意的HTML/JavaScript代码到用户浏览的网

angularjs通过ng-bind-html指令和$sce服务绑定html

代码: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>angularjs嵌入html</title> </head> <body ng-app="app" ng-controller="MainCtrl"> <div ng-bind-

【AngularJs】---$sce 输出Html

[问题描述] angular js的强大之处之一就是他的数据双向绑定功能----->ng-bind和针对form的ng-model 但在我们的项目当中会遇到这样的情况,后台返回的数据中带有各种各样的html标签 angularJs输出html的时候,浏览器并不解析这些html标签 我们用ng-bind-html这样的指令来绑定,浏览器中显示的还是html代码 [解决办法---$sce] 通过使用$ sce.trustAsHtml().该方法将值转换为特权所接受并能安全地使用“ng-bind-ht

angularjs解决方案之 Error: [$sce:unsafe]

angularjs中无法直接使用ng-bind-html: <div ng-bind-html="item.text | highlight: $select.search"></div> 1.app.js中添加 angular.module('epcui', [     'ngSanitize'// ngSanitize ]) 2.html中添加sanitize <script src="js/angular/angular-sanitize.

深入理解AngularJS中的ng-bind-html指令和$sce服务

angular js的强大之处之一就是他的数据双向绑定这一牛B功能,我们会常常用到的两个东西就是ng-bind和针对form的ng-model.但在我们的项目当中会遇到这样的情况,后台返回的数据中带有各种各样的html标签.如: $scope.currentWork.description = "hello,<br><b>今天我们去哪里?</b>" 我们用ng-bind-html这样的指令来绑定,结果却不是我们想要的.是这样的 hello, 今天我们

【转载】AngularJS 用$sce服务来过滤HTML标签,解决无法正确显示后台传递的html标签

angular js的强大之处之一就是他的数据双向绑定这一牛B功能,我们会常常用到的两个东西就是ng-bind和针对form的ng-model.但在我们的项目当中会遇到这样的情况,后台返回的数据中带有各种各样的html标签.如: $scope.currentWork.description = “hello,<br><b>今天我们去哪里?</b>” 我们用ng-bind-html这样的指令来绑定,结果却不是我们想要的.是这样的 hello,<br><s

桂电在线_微信公众平台开发之-运用angularjs显示学校公告新闻列表和详情页面

折腾angularjs的感悟 几天折腾,总的来说看了很多博客,要么不是最新的技术文档,要么写得不够完整,因为别人是基于他们的理解写的技术博客代码不一定会贴完整,所以一旦你用的是最新的想要看完整的实例就只能去官网查阅文档,现在通过实现下面的两个功能才真正了解什么是前端的MVVM框架. 另外,总结下我理解中的MVVM框架:后台php是MVC框架,一直做法是php处理数据,然后把数据渲染到模板,然后后台返回html页面给浏览器, 现在前端mvvm(model-view-viewmodel)就是:mod

AngularJS分别RequireJS做文件合并压缩的那些坑

小心!AngularJS合并RequireJS做文件离开压缩的那些坑 小心!AngularJS合并RequireJS做文件离开压缩的那些坑,各人正在做文件离开压缩的时辰一定要注意,感乐趣的网友可以参考一下正在项目运用了AngularJS框架,用RequireJS做异步模块加载(AMD),正在做文件离开压缩时,遇到了一些坑,有些只是搞定了,但不大白原因. 那些坑1. build.js内里的paths必须跟main.js内里的保持等同. 这个build.js便是r.js运用的设置文件,而main.j