我不想懒加载我的路线模板.相反,我想在执行任何路由之前将所有路由模板加载到$templateCache中.
这就是我在做的事情:
angular.module('myApp',['ngRoute']).config(['$routeProvider','$locationProvider',function ($routeProvider,$locationProvider) { $locationProvider.html5Mode(false); $routeProvider.when("/main",{templateUrl: "main",controller: "MainCtrl"}) .when("/login",{templateUrl: "login",controller: "LoginCtrl"}); }]) .run(['$location','$templateCache',function ($location,$templateCache) { //...Save templates in $templateCache $location.path("/login"); }]);
如果您浏览到/,因为它与任何路由都不匹配,这可以正常工作.但是如果你浏览或刷新/#/ login,似乎路由服务试图在我的运行块运行之前加载模板并向服务器发出请求.
无论如何要确保填充$templateCache的代码将在路由服务寻找模板之前执行?
如果您使用grunt,我强烈推荐
grunt-angular-templates用于此目的,但如果您不这样做并且想要手动创建单独的模块,您可以在其中使用与现在类似的逻辑,其中包括以下内容:
angular.module('myapp.templates').run(['$templateCache',function($templateCache) { $templateCache.put(...
然后简单地将该模块作为您的app依赖项引用.在路由逻辑启动之前,依赖模块的运行块将首先运行,这就是你想要的.