我在使用AngularJS时遇到了问题。我的应用程序从服务器请求一些数据,其中从服务器返回的数据之一是一个包含HTML字符串的值。我正在使用以下方式将其绑定到我的Angular模板中:
<div>{{{item.location_icons}}</div>
但是正如你所预期的那样,我看到的不是图标的图片,而是标记语言。基本上,div中的内容看起来像:
"<i class='my-icon-class'/>"
这不是我想要的。
有人知道我可以做什么来解析转录中的HTML吗?
我在使用AngularJS时遇到了问题。我的应用程序从服务器请求一些数据,其中从服务器返回的数据之一是一个包含HTML字符串的值。我正在使用以下方式将其绑定到我的Angular模板中:
<div>{{{item.location_icons}}</div>
但是正如你所预期的那样,我看到的不是图标的图片,而是标记语言。基本上,div中的内容看起来像:
"<i class='my-icon-class'/>"
这不是我想要的。
有人知道我可以做什么来解析转录中的HTML吗?
由于ng-bind-html-unsafe已被弃用,你可以使用以下代码替代。
你需要在你的控制器内创建一个函数:
$scope.toTrustedHTML = function( html ){
return $sce.trustAsHtml( html );
}
并在您的视图中使用类似以下的内容:
<span ng-bind-html='toTrustedHTML( myHTMLstring )'></span>
不要忘记注入$sce:
AppObj.controller('MyController', function($scope, $sce) {
//your code here
});
$compile
,而不是ng-bind-html-unsafe
。ng-bind-html-unsafe
指令。因此,在未来更新应用程序之前,请考虑使用此选项。(ng-bind-html-unsafe
可能将不再起作用...)
http://code.angularjs.org/1.2.0rc1/docs/api/ng.directive:ngBindHtml
href
、src
等等...如果您绑定用户输入,那么可能是不安全的,但如果您绑定到自己的内部值,我认为使用未经过清洗的版本是可以的。 - Toshng-bind-html
是在ngSanitize
模块中的,就像ngResource
一样,并没有预装在Angular中。您需要包含该脚本并确保您的应用程序依赖于它:var app = angular.module('app', ['ngSanitize']);
。然后您就可以使用ng-bind-html
指令了,像这样使用:<div ng-bind-html="somemodel"></div>。 - satchmorunng-bind-html
与$sanitize
提供程序一起使用。 - Luis Delgado