1

从 Angular 文档中它说$sceDelegateProvider.resourceUrlWhitelist可以设置受信任的资源 URL,但我需要来自控制器的功能。

我想在我的服务中设置可信资源 URL 的白名单。因此,我只被允许使用$sce服务而不是提供者..

我试图实现这个例子,它给我带来了一个错误(“$sce:unsafe Require a safe/trusted value”):

this.renderUrl = this.$sce.getTrustedUrl(${this.baseUrl}) + `/x/y/?name=${this.name};

然后将 注入renderUrl到 html 中:

<iframe ng-src="{{$ctrl.renderUrl}}"></iframe>

有没有办法从$sce服务中设置受信任的资源 URL,以便将其添加到受信任的资源 URL 的白名单中?

4

1 回答 1

1

创建过滤器:

app.filter('trusturl', ['$sce', function ($sce) {
  return function(url) {
    return $sce.trustAsResourceUrl(url);
  };
}]);

在您的服务中:

// Injecting Filter in Service
app.service('trustUrlService', function ($scope,$filter) {

  $scope.trustUrl = function(url){
    return $filter('trusturl')(url);
  };

});

在控制器中使用如下:

app.controller("myCtrl", function($scope,trustUrlService) {  
  $scope.url = trustUrlService.trustUrl(url);
});

在模板中,您可以这样使用:

<iframe ng-src={{ imageHref | trusturl }}" />
于 2017-08-11T07:36:09.487 回答