13

私の意図は、すべてのテンプレート名と値のリストを含む外部JSONファイルへの1回の呼び出しで、Webアプリのすべてのテンプレートをロードすることです。

現在、アプリの実行フェーズでこれらのテンプレートを読み込んでいます。

app.run(function ($http, $templateCache) {
    $http.get('/templates/all.json').success(function (data) {
        var i;
        for (i = 0; i < data.length; i++) {
            $templateCache.put(data[i].name, data[i].template);
        }
    });
});

ただし、Angular.jsの構成フェーズは実行フェーズの前に実行されるため、templateCacheからロードする場合は次のようにします。

app.config(function($routeProvider, $locationProvider) {
    //App routing
    $routeProvider.
        //Homepage
        when('/', {templateUrl: 'home.html'}).

        //My schedule
        when('/my-schedule', {templateUrl: 'my-schedule.html'});
});

Angularはまだいっぱいになっていないhome.htmlため、サーバーからの読み込みを試みます。$templateCache

前の例のテンプレートとのテンプレートがall.json含まれているとします。home.htmlmy-schedule.html

$templateCacheアプリを設定する前に記入することは可能$routeProviderですか?

4

3 に答える 3

2

HTTP インターセプターを使用する場合は、$templateCacheそこに挿入できます。

    $provide.factory('myHttpInterceptor', ['$templateCache', function($templateCache) {
        return {
            request: function(config) {
                // do fancy things with $templateCache here
                return config;
            }
        };
    }]);
于 2013-12-12T16:57:52.340 に答える