需要清理<ng-include src =“url”>但ng-bind-html想要一个表达式并且不接受URL

时间:2016-01-20 10:53:11

标签: angularjs angularjs-directive angular-ui-router angularjs-ng-include ng-bind-html

我正在编写一个应用程序,它在一个页面中显示几种不同类型的设备,并根据设备类型加载外部模板。

用户将能够提交自定义模板,因此我需要对其进行清理。

目前我正在使用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。

1 个答案:

答案 0 :(得分:0)

在指令函数中使用来自ngSanitize模块的$ sce:

scope.getTemplateUrl = function() {
  return $sce.trustAsHtml(value);
};

或使用过滤器执行以下操作:

ng-bind-html="getTemplateUrl() | sanitizedHtml"

有关此处消毒的更多信息:https://docs.angularjs.org/api/ngSanitize/service/ $ sanitize