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" (Strict Contextual Escaping) サービスを使用しているため、例外がスローされます。

「config」メソッドで 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 に答える