3

私のアプリには、Cookie に設定された値に応じて異なるデフォルト ルートが必要です。しかし、私のルーター構成内で$cookiesは定義されていません-アプリのブートストラップのこの段階では、$cookieProvider定義されているだけのようです(同様に$cookieStore、どちらも利用できません)。$cookiesこれから、サービスによって後でアクセスできる実際のオブジェクトに到達するにはどうすればよいですか。

    angular.module('jnr').config(['$routeProvider', '$locationProvider', '$cookiesProvider', function($routeProvider, $locationProvider, $cookiesProvider) {

        $locationProvider.html5Mode(true).hashPrefix('!');   

        $routeProvider.when('/tunes', {
            templateUrl: '/views/list-tunes.html'
        }).when('/tunes/:instrument', {
            templateUrl: '/views/list-tunes.html'
        }).otherwise({
            redirectTo: '/tunes/' + ([get instrument from the cookie here] || 'clarinet')
        });
    }]);
};
4

2 に答える 2

3

configブロックでは使えないようです。

こちらを参照してください:なぜ角度クッキーを注入できないのですか? そしてここ : config() に注入された $location を取得できないのはなぜですか?

なぜなら :

構成ブロック - プロバイダーの登録および構成フェーズ中に実行されます。構成ブロックに挿入できるのは、プロバイダーと定数のみです。これは、サービスが完全に設定される前にサービスが誤ってインスタンス化されるのを防ぐためです。

$cookies はサービスであり、構成ブロックにサービスを挿入することはできません。

実行ブロックに注入する必要があります。

または、そのような jquery cookie API を使用します。

$.cookie('myCookie')
于 2013-09-23T12:59:12.743 に答える