Использование функциональности $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 }}" />