7

考虑代码(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”(严格上下文转义)服务。

如何在“配置”方法中使用 SCE?这个问题有什么可能的解决方案?

4

1 回答 1

1

Angular 提供$sceProvider服务,在特权上下文中,指令和代码将绑定到结果$sce.getTrusted(context, value)而不是直接绑定到值。

指令使用$sce.parseAs而不是$parse观察属性绑定,它$sce.getTrusted在非常量文字的幕后执行。

除此之外,我认为:


配置块- 在提供者注册和配置阶段执行。只有提供者和常量可以注入到配置块中。这是为了防止在完全配置之前意外实例化服务。


运行块- 在创建注入器后执行并用于启动应用程序。只有实例和常量可以注入运行块。这是为了防止在应用程序运行时进行进一步的系统配置。


所以,现在 $sceProvider 是一个内置服务,你不能将自己的服务,或者像 $http 这样的内置服务注入到 config() 中。

解决方案

使用run()代替。

于 2016-12-02T11:16:18.940 回答