在我的AngularJS应用程序中,我有超过15个控制器,服务等等,我目前将它们全部包含在index.html中,其中包括ng-view,所以我想知道有没有办法只包含控制器,服务当前加载的路线?而不是一直包括所有路径的所有控制器,服务?感谢
答案 0 :(得分:1)
AngularJS方法是预先加载它们。您可能可能执行类似
的操作$routeProvider
.when('/home',
{
templateUrl: '/app/views/home.html',
resolve: resolveController('/app/controllers/homeController.js')
});
然后resolveController将返回一个promise.It将加载控制器的脚本并在加载完成后解析promise。像
这样的东西app.config(['$routeProvider',
function($routeProvider) {
var resolveController = function(path) {
var deferred = $q.defer();
var script = document.createElement('script');
script.src = path;
script.onload = function() {
$scope.$apply(deferred.resolve());
};
document.body.appendChild(script);
return deferred.promise;
};
$routeProvider.when('/home', function() { /*...*/ } );
}
);
可能会出现语法错误,因为我甚至没有试过这个,但如果我想这样做,这就是我可能会尝试的。