gpt4 book ai didi

angularjs - 如何在模块配置中将 templateUrl 设置为受信任?

转载 作者:行者123 更新时间:2023-12-04 12:54:26 27 4
gpt4 key购买 nike

考虑代码(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?这个问题有什么可能的解决方案?

最佳答案

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

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

除此之外,我认为:

Configuration blocks - get executed during the provider registrations and configuration phase. Only providers and constants can be injected into configuration blocks. This is to prevent accidental instantiation of services before they have been fully configured.



Run blocks - get executed after the injector is created and are used to kickstart the application. Only instances and constants can be injected into run blocks. This is to prevent further system configuration during application run time.



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

解决方案

使用 run()反而。

关于angularjs - 如何在模块配置中将 templateUrl 设置为受信任?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19779152/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com