我需要从某些目录动态加载控制器,即代替:
$routeProvider.when(path, {
templateUrl: 'templates' + path + '.html',
controller: 'myController'
});
应该指出它所在的目录:
$routeProvider.when(path, {
templateUrl: 'templates' + path + '.html',
controller: 'controllerDir/myController'
});
我想应该有一些标准方法(?)。可能有一些方法可以使用动态加载包含控制器的文件,类似于qQuery fashion(getScript)?
答案 0 :(得分:2)
要动态加载控制器,您需要使用RequireJS。
有一个util可以更容易地将RequireJS集成到AngularJS app
答案 1 :(得分:2)
Route具有resolve
属性,可以利用该属性来实现控制器的动态加载。
此链接可以帮助您入门:
另一方面,只有在拥有大量控制器时才考虑动态加载脚本。最好先预先加载脚本(可以捆绑和缩小),并让浏览器缓存它们,以便为用户提供流畅的体验
答案 2 :(得分:0)
您也可以使用此方法:https://github.com/kapysh/angular-dynamic-loader
只需从repo loadctrl.directive.js
获取指令并在您的模板中:
<div load-ctrl="portalController"></div>
并在app.js中:
portal.constant('CONTROLLER_PATHS', {
'portalController': {
path: 'static/angular_app/js/controllers/portal.controller.js',
loaded: false
}
})