$ sce.trustAsResourceUrl()全局
我怎样才能做到这一点: $sce.trustAsResourceUrl('URL_HERE');
在全球范围内,像在主要的应用程序的config()
或run()
函数,以便任何具有URL_HERE
iFrames,img src URL_HERE
可以工作?
Docs在解释这个方面相当贫穷。
我刚刚从前面的回答中读到你的评论。 不知道你是否find了解决scheme。 似乎你正在寻找一个白名单types的东西。 我最近发现,$ sce有白名单function。
从AngularJS文档中获取$ 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中做这样的string插值:
<iframe ng-src="{{ 'http://srv1.assets.example.com/' + url_asset }}"></iframe>
你可以使用一个filter。 这些都是全球可用的。
angular.module('myApp') .filter('trustUrl', function ($sce) { return function(url) { return $sce.trustAsResourceUrl(url); }; });
<img ng-src={{ imageHref | trustUrl }}">
我也喜欢过滤解决scheme; 然而,它没有为我工作,直到我正确地注入$ sce …
app.filter('trustUrl', ['$sce', function ($sce) { return function(url) { return $sce.trustAsResourceUrl(url); }; }]);
我用我的video存储在文件系统上:
app.config( [ '$sceDelegateProvider', function($sceDelegateProvider) { $sceDelegateProvider.resourceUrlWhitelist(['self','filesystem:**']); } ]);