动态AngularJS引导程序或负载控制器

时间:2016-07-21 23:07:03

标签: angularjs angular-bootstrap

我认为这个问题的答案是"没有"但我无论如何都要问它,因为我似乎无法找到明确的答案。

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>

这样的事情可能吗?

1 个答案:

答案 0 :(得分:2)

是的,AngularJS能够动态加载路由控制器和依赖项,例如工厂。它需要使用RequireJS。 RequireJS将是您的入口点,它将加载Angular。

angular route的resolve属性将启动对通过RequireJS解析文件的某些代码的调用。由于resolve属性使用promises,因此在加载文件之前不会加载路由。

或者你可以使用GulpJS,Gulp-angular-template cache,concat,uglify等来优化应用程序。这是一个例子:

http://weblogs.asp.net/dwahlin/dynamically-loading-controllers-and-views-with-angularjs-and-requirejs