我正在尝试将angularjs app与requirejs集成。我想按需预加载模板和控制器。在我的例子中:
http://plnkr.co/edit/vIps7t92OFzA5RXoTjvI?p=preview
我在app.js中初始化控制器SocialController,我需要在SocialController中动态加载StreamController。不幸的是我得到了一个例外,请参阅浏览器控制台。
Argument' StreamController'不是一个功能,未定义
如果我从SocialController中删除
angular.module('sampleTest').controller('StreamController', StreamController);
并将其添加到app.js,它可以工作,但在这种情况下,requirejs将在开始时预先加载它,而不是在我需要时,在SocialController内按需加载。
答案 0 :(得分:0)
这是一个答案。在应用启动之后,看起来angular似乎不允许在以后实例化任何新服务或控制器。因此,在所有控制器和服务都是init之后,下面的代码我必须添加到底部的app.js文件。这是一个黑客,但修复了与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;
}
);