使用angularjs和requirejs动态加载控制器
我正在尝试将angularjs应用程序与requirejs集成。我想按需预加载模板和控制器。在我的例子中: 我在app.js中初始化了controller SocialController,需要在SocialController中动态加载StreamController。不幸的是,我遇到了一个异常,请参阅浏览器控制台 参数“StreamController”不是函数,未定义 如果我从SocialController中删除使用angularjs和requirejs动态加载控制器,angularjs,requirejs,Angularjs,Requirejs,我正在尝试将angularjs应用程序与requirejs集成。我想按需预加载模板和控制器。在我的例子中: 我在app.js中初始化了controller SocialController,需要在SocialController中动态加载StreamController。不幸的是,我遇到了一个异常,请参阅浏览器控制台 参数“StreamController”不是函数,未定义 如果我从SocialController中删除 angular.module('sampleTest').controll
angular.module('sampleTest').controller('StreamController', StreamController);
并将其添加到app.js中,它可以工作,但在本例中,requirejs将在SocialController on demand中从一开始就预加载它,而不是在我需要的时候。看起来angular不允许稍后在应用程序启动后实例化任何新服务或控制器。因此,在所有控制器和服务都初始化之后,我必须将下面的代码添加到底部的app.js文件中。这是一个hack,但修复了使用requirejs延迟加载的问题 查看我的链接到plunkr与修复。现在没有例外,StreamController是延迟加载的,并在启动后初始化
sampleApp.config(
function (
$controllerProvider,
$compileProvider,
$filterProvider,
$provide
) {
sampleApp.controller = $controllerProvider.register;
sampleApp.directive = $compileProvider.directive;
sampleApp.filter = $filterProvider.register;
sampleApp.factory = $provide.factory;
sampleApp.service = $provide.service;
}
);
惰性加载角度代码是很棘手的,这在我看来不应该。看看我对这方面的看法——还有其他一些。