如何安全地将 HTML 从模型绑定到视图
How to safely bind HTML from Model to View
如果所有文本和样式都保存在 api
上,则将 html 代码显示为 html 代码
假设我使用的是文本编辑器,我不仅保存了文本 api,还保存了 html 样式(例如 <align>
、<h1>
, blabla).我想要的是在我的 html 视图中显示文本,但使用样式。例如,如果我保存了 <h1><u>Hello there!</u><h1>
,我需要在我的 html 视图中显示标题为 h1 并带有下划线的文本。
我获取 api 响应的代码:
function info(){
$http.get('/theApi')
.then(function(data){
$scope.product = data.data.Response;
});
}
Returns 像这样:
[{Name: "Chuck", Message: "<h1><u>Hello there!</u><h1>"}]
如果我这样传递数据:
{{product.Message}}
在我的 html 视图中,我会得到字面意思:
<h1><u>Hello there!</u><h1>
那么,我该怎么做才能将文本作为标题 h1 并在 html 视图中添加下划线?
我正在使用 AnguarJs 和 Javascript。
提前致谢
使用 ng-bind-html
指令和 ngSanitize module:
angular.module('bindHtmlExample', ['ngSanitize'])
.controller('ExampleController', ['$scope', function($scope) {
$scope.myHTML =
'<h1><u>Hello there!</u><h1>';
}]);
<script src="//unpkg.com/angular/angular.js"></script>
<script src="//unpkg.com/angular-sanitize/angular-sanitize.js"></script>
<body ng-app="bindHtmlExample" ng-controller="ExampleController">
<input ng-model="myHTML">
<p ng-bind-html="myHTML"></p>
</body>
如果所有文本和样式都保存在 api
上,则将 html 代码显示为 html 代码假设我使用的是文本编辑器,我不仅保存了文本 api,还保存了 html 样式(例如 <align>
、<h1>
, blabla).我想要的是在我的 html 视图中显示文本,但使用样式。例如,如果我保存了 <h1><u>Hello there!</u><h1>
,我需要在我的 html 视图中显示标题为 h1 并带有下划线的文本。
我获取 api 响应的代码:
function info(){
$http.get('/theApi')
.then(function(data){
$scope.product = data.data.Response;
});
}
Returns 像这样:
[{Name: "Chuck", Message: "<h1><u>Hello there!</u><h1>"}]
如果我这样传递数据:
{{product.Message}}
在我的 html 视图中,我会得到字面意思:
<h1><u>Hello there!</u><h1>
那么,我该怎么做才能将文本作为标题 h1 并在 html 视图中添加下划线?
我正在使用 AnguarJs 和 Javascript。
提前致谢
使用 ng-bind-html
指令和 ngSanitize module:
angular.module('bindHtmlExample', ['ngSanitize'])
.controller('ExampleController', ['$scope', function($scope) {
$scope.myHTML =
'<h1><u>Hello there!</u><h1>';
}]);
<script src="//unpkg.com/angular/angular.js"></script>
<script src="//unpkg.com/angular-sanitize/angular-sanitize.js"></script>
<body ng-app="bindHtmlExample" ng-controller="ExampleController">
<input ng-model="myHTML">
<p ng-bind-html="myHTML"></p>
</body>