Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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和requirejs动态加载控制器_Angularjs_Requirejs - Fatal编程技术网

使用angularjs和requirejs动态加载控制器

使用angularjs和requirejs动态加载控制器,angularjs,requirejs,Angularjs,Requirejs,我正在尝试将angularjs应用程序与requirejs集成。我想按需预加载模板和控制器。在我的例子中: 我在app.js中初始化了controller SocialController,需要在SocialController中动态加载StreamController。不幸的是,我遇到了一个异常,请参阅浏览器控制台 参数“StreamController”不是函数,未定义 如果我从SocialController中删除 angular.module('sampleTest').controll

我正在尝试将angularjs应用程序与requirejs集成。我想按需预加载模板和控制器。在我的例子中:

我在app.js中初始化了controller SocialController,需要在SocialController中动态加载StreamController。不幸的是,我遇到了一个异常,请参阅浏览器控制台

参数“StreamController”不是函数,未定义

如果我从SocialController中删除

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;
            }
        );

惰性加载角度代码是很棘手的,这在我看来不应该。看看我对这方面的看法——还有其他一些。