Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在AngularJS中动态加载用于路由的控制器_Angularjs_Routing_Controllers - Fatal编程技术网

在AngularJS中动态加载用于路由的控制器

在AngularJS中动态加载用于路由的控制器,angularjs,routing,controllers,Angularjs,Routing,Controllers,我需要从某些目录动态加载控制器,即,而不是: $routeProvider.when(path, { templateUrl: 'templates' + path + '.html', controller: 'myController' }); 放置它的目录应指向: $routeProvider.when(path, { templateUrl: 'templates' + path + '.html', controller: 'controllerDir

我需要从某些目录动态加载控制器,即,而不是:

$routeProvider.when(path, {
    templateUrl: 'templates' + path + '.html',
    controller: 'myController'
});
放置它的目录应指向:

$routeProvider.when(path, {
    templateUrl: 'templates' + path + '.html',
    controller: 'controllerDir/myController'
});

我想应该有一个标准的方法。可能有某种方法可以使用类似于qQuery方式(getScript)的动态加载包含控制器的文件?

要动态加载控制器,需要使用RequireJS

有一个util可以使将RequireJS集成到AngularJS应用程序更容易

路由有一个属性,可以利用该属性实现控制器的动态加载

此链接将帮助您开始:


在不同的注释中,仅当有大量控制器时才考虑脚本的动态加载。最好提前加载脚本(可以捆绑和缩小),并让浏览器缓存它们,以便为用户提供流畅的体验

您也可以使用以下方法:

只需从repo loadctrl.directive.js中获取指令

在模板中:

<div load-ctrl="portalController"></div>
portal.constant('CONTROLLER_PATHS', {
  'portalController': {
    path: 'static/angular_app/js/controllers/portal.controller.js',
    loaded: false
  }
})