AngularJS bootstrap 或动态加载控制器
AngularJS bootstrap or load controllers on the fly
我认为这个问题的答案是 "no" 但我还是要问这个问题,因为我似乎找不到明确的答案。
可以 angularjs 动态加载控制器吗?
为了进一步解释,我有一个 angular 应用程序,它通过 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>
...
在应用程序模块中,我有一个路由设置,如下所示:
$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>
这样的事情可能吗?
是的,AngularJS 能够动态加载路由控制器和工厂等依赖项。它需要使用 RequireJS。 RequireJS 将是您的入口点,它将加载 Angular。
angular 路由的解析 属性 将启动对通过 RequireJS 解析文件的一些代码的调用。由于 resolve 属性 利用承诺,在加载文件之前不会加载路由。
或者,您可以使用 GulpJS、Gulp-angular-模板缓存、concat、uglify 等优化应用程序。这是一个示例:
我认为这个问题的答案是 "no" 但我还是要问这个问题,因为我似乎找不到明确的答案。
可以 angularjs 动态加载控制器吗?
为了进一步解释,我有一个 angular 应用程序,它通过 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>
...
在应用程序模块中,我有一个路由设置,如下所示:
$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>
这样的事情可能吗?
是的,AngularJS 能够动态加载路由控制器和工厂等依赖项。它需要使用 RequireJS。 RequireJS 将是您的入口点,它将加载 Angular。
angular 路由的解析 属性 将启动对通过 RequireJS 解析文件的一些代码的调用。由于 resolve 属性 利用承诺,在加载文件之前不会加载路由。
或者,您可以使用 GulpJS、Gulp-angular-模板缓存、concat、uglify 等优化应用程序。这是一个示例: