考虑代码(Angular 1.2 RC3):
main.config(['$routeProvider', '$sce', function($routeProvider, $sce) {
$routeProvider.when('/', { templateUrl: $sce.trustAsResourceUrl('bla-bla.html'), controller: "App.Controllers.BlaBla" });
$routeProvider.otherwise({ redirectTo: '/' });
}]);
它会引发异常,因为在配置期间不允许服务,我在这里使用“$ sce”(严格上下文转义)服务。
如何在“config”方法中使用SCE?这个问题的可能解决方案是什么?
答案 0 :(得分:1)
Angular具有$sceProvider
服务,在特权上下文中,指令和代码将绑定到$sce.getTrusted(context, value)
的结果而不是直接绑定到值。
指令使用$sce.parseAs
而不是$parse
来监视属性绑定,后者在非常量文字后面执行$sce.getTrusted
。
配置块 - 在提供商注册和配置阶段执行。只有提供者和常量 可以注入配置块。这是为了防止 在服务完全之前意外实例化服务 构造
运行块 - 在创建注入器后执行并用于启动应用程序。只有实例和常量才可以 注入运行块。这是为了防止进一步的系统 在应用程序运行时配置。
所以,现在$ sceProvider是一个内置服务,你不能将自己的服务或内置服务(如$ http)注入config()。
改为使用run()。