我正在编写一个应用程序,它在一个页面中显示几种不同类型的设备,并根据设备类型加载外部模板。
用户将能够提交自定义模板,因此我需要对其进行清理。
目前我正在使用ng-repeat和自定义指令来显示设备,它们使用:
template: '<ng-include src="getTemplateUrl()"></ng-include>'
scope.getTemplateUrl()是我在指令的link函数中声明的函数,它根据设备类型返回一个URL。
它完美无瑕,但正如我所说,我需要清理URL内容。
不幸的是,ng-bind-html想要一个表达式而不是一个URL,所以以下内容不起作用:
template: '<div ng-bind-html="getTemplateUrl()"/></div>'
我想避免在我的指令中弄乱像$ http这样的异步操作,所以我不能简单地获取URL内容,我不知道如何在没有首先检索url内容的情况下直接使用$ sanitize。
答案 0 :(得分:0)
在指令函数中使用来自ngSanitize模块的$ sce:
scope.getTemplateUrl = function() {
return $sce.trustAsHtml(value);
};
或使用过滤器执行以下操作:
ng-bind-html="getTemplateUrl() | sanitizedHtml"
有关此处消毒的更多信息:https://docs.angularjs.org/api/ngSanitize/service/ $ sanitize