$ sce.trustAsResourceUrl() глобально
Как я могу сделать что-то вроде этого:
$sce.trustAsResourceUrl('URL_HERE');
В глобальном масштабе, как в главном приложении config()
или run()
, функционирует так, что будут работать любые iFrames, img src и т.д., которые имеют URL_HERE
?
Документы довольно плохо объясняют это.
Ответы
Ответ 1
Я только что прочитал ваш комментарий из предыдущего ответа. Не уверен, что вы нашли решение. Кажется, вы ищете тип белого списка. Недавно я выяснил, что существует функция "белый список" для $sce.
Взято из AngularJS docs для $sceDelegateProvider:
angular.module('myApp', []).config(function($sceDelegateProvider) {
$sceDelegateProvider.resourceUrlWhitelist([
// Allow same origin resource loads.
'self',
// Allow loading from our assets domain. Notice the difference between * and **.
'http://srv*.assets.example.com/**']);
})
С этим вы можете сделать строчную интерполяцию в iframe следующим образом:
<iframe ng-src="{{ 'http://srv1.assets.example.com/' + url_asset }}"></iframe>
Ответ 2
Вы можете использовать фильтр. Они доступны по всему миру.
angular.module('myApp')
.filter('trustUrl', function ($sce) {
return function(url) {
return $sce.trustAsResourceUrl(url);
};
});
<img ng-src={{ imageHref | trustUrl }}">
Ответ 3
Мне также понравилось решение для фильтра; однако, это не сработало для меня, пока я не ввел $sce правильно...
app.filter('trustUrl', ['$sce', function ($sce) {
return function(url) {
return $sce.trustAsResourceUrl(url);
};
}]);
Ответ 4
Я использую для своих видео, хранящихся в файловой системе:
app.config( [
'$sceDelegateProvider',
function($sceDelegateProvider)
{
$sceDelegateProvider.resourceUrlWhitelist(['self','filesystem:**']);
}
]);