AngularJS包含基于当前路由的脚本

时间:2014-03-20 17:50:43

标签: javascript angularjs

在我的AngularJS应用程序中,我有超过15个控制器,服务等等,我目前将它们全部包含在index.html中,其中包括ng-view,所以我想知道有没有办法只包含控制器,服务当前加载的路线?而不是一直包括所有路径的所有控制器,服务?感谢

1 个答案:

答案 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() { /*...*/ } );
    }
);

可能会出现语法错误,因为我甚至没有试过这个,但如果我想这样做,这就是我可能会尝试的。