Использование функциональности $sceProvider из $ sce

Из угловых документов написано, что $sceDelegateProvider.resourceUrlWhitelist Можно установить URL-адреса доверенных ресурсов, но мне нужна эта функциональность от контроллера.

Я хочу установить белый список URL-адресов доверенных ресурсов в моем сервисе. Поэтому мне разрешено использовать только $sce сервис, а не провайдер..

Я пытался реализовать этот пример, и это вызвало у меня ошибку ( "$sce:unsafe Require a safe/trust value"):

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

Затем введите renderUrl в HTML:

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

Есть ли способ установить URL доверенного ресурса из $sce сервис, то есть он будет добавлен в белый список URL-адресов доверенных ресурсов?

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 }}" />
Другие вопросы по тегам