AngularJS:我如何懒散地加载/注册提供者?
我知道在应用程序通过AngularJS:我如何懒散地加载/注册提供者?,angularjs,lazy-loading,Angularjs,Lazy Loading,我知道在应用程序通过$controllerProvider引导后,您可以动态注册控制器 $controllerProvider.register('controllername', function () { // controller stuff here }); 我发现的一项服务可以通过$provide注册 $provide.service('servicename', function () { // service stuff here }); 但是我似乎找不到如何以
$controllerProvider
引导后,您可以动态注册控制器
$controllerProvider.register('controllername', function () {
// controller stuff here
});
我发现的一项服务可以通过$provide注册
$provide.service('servicename', function () {
// service stuff here
});
但是我似乎找不到如何以懒散的方式注册提供者。我第一次看到的一种技术涉及一个config
函数,它“窃取”必要的提供者
说明:
重要的提供程序(如指令、路由、控制器)仅在配置阶段可用。如果您想在以后添加一些内容,则必须创建一个配置函数,用于存储对所需提供程序的引用,以供以后使用(因为它不是明确允许或禁止的,我称之为“窃取”)。然后,一个知道“被盗”引用的定制服务将使用它们来注册以后需要的任何东西
我自己用RequireJS延迟加载Angular内容的努力也在使用相同的原则。但这已经是我正在使用的,我“偷”了控制器和指令的提供程序,还有所有的,唯一找不到的是我需要提供一个提供程序,jeez命名冲突。。。你可以有服务、工厂和供应商,我知道如何注册服务和工厂,但无法让供应商工作。对不起,我不理解你最初的问题。然而,窃取
$provide
并调用$provide.provider()
会不会懒散地工作?我没试过,只是想知道。。。我在这里看到的问题(这是您的问题吗?)是您不能使用延迟创建的提供程序本身。你可以使用(注入)它提供的服务,但你不能注入提供者。我觉得很愚蠢:p刚刚发现我的问题,我在提供者中有一个输入错误。。。正确的语法是$provide.provider('name',function(){});