我认为这个问题的答案是"没有"但我无论如何都要问它,因为我似乎无法找到明确的答案。
angularjs可以动态加载控制器吗?
为了进一步解释,我有一个以默认方式引导的角度应用程序,通过ng-app.Example,index.html文件:
<!doctype html>
<html>
<head>
<title>myapp</title>
</head>
<body ng-app="app">
...
<app-body></app-body>
<script src="lib/angular/angular.min.js"></script>
<script src="app/app.js"></script>
...
在app模块中,我有一个路由设置,如下所示:
$routeProvider
.when('/Home', {
templateUrl: 'home/home.html',
controller: 'HomeController'
})
.when('/Behaviors', {
templateUrl: 'contact/contact.html',
controller: 'ContactController'
});
// etc.
我很好奇 - 有没有办法在用户进入该路线时加载HomeController.js文件?所以js文件没有在上面的index.html中设置,而是在home / home.html中设置:
<script src="home/HomeController.js"></script>
这样的事情可能吗?
答案 0 :(得分:2)
是的,AngularJS能够动态加载路由控制器和依赖项,例如工厂。它需要使用RequireJS。 RequireJS将是您的入口点,它将加载Angular。
angular route的resolve属性将启动对通过RequireJS解析文件的某些代码的调用。由于resolve属性使用promises,因此在加载文件之前不会加载路由。
或者你可以使用GulpJS,Gulp-angular-template cache,concat,uglify等来优化应用程序。这是一个例子: