【问题标题】:Conditionally inject angular module dependency有条件地注入角度模块依赖
【发布时间】:2015-06-19 12:08:33
【问题描述】:

我是 Angular 新手,有以下代码。

angular.module('MyApp')
    .controller('loginController', ['$scope', '$http', 'conditionalDependency',
        function ($scope, $http, conditionalDependency{
}

我想有条件地加载 conditionalDependency。像这样的

if(true)
{
//add conditionalDependency
}

如何做到这一点。我见过this post。但是,我的要求是我有 function

中指定的依赖项

提前致谢。

【问题讨论】:

  • 这是出于性能/带宽原因还是出于应用程序/结构的考虑?简短的回答:你不能在本地做到这一点,但互联网上有一些有趣的文章。

标签: angularjs


【解决方案1】:

不太清楚为什么你会必须将它放在一个命名函数中,就像你的例子一样,但是......

如果您需要条件依赖,我建议您查看以下内容:

Conditional injection of a service in AngularJS

我在几个小众场景中使用过这种方法,效果很好。

示例:

angular.module('myApp').controller('loginController', 
    ['$injector', '$scope', '$http',
    function($injector, $scope, $http) {
        var service;

        if (something) {
            service = $injector.get('myService');
        }
    });

【讨论】:

    【解决方案2】:

    即使没有在控制器中注入注射器,您也可以使用它

    if(something){
       var injector = angular.element(document).injector();
       var myService  = injector.get('myService')
    }
    

    【讨论】:

      【解决方案3】:

      用途:

      1. angular.injector().get('conditionalDep');
      2. 您可以将$injector 注入您的文件一次并调用$injector.get('dep')

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-10-16
        • 2015-02-14
        • 1970-01-01
        • 2011-06-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多