在angularjs中定义常数时,如何使用注射剂

How to get at injectables when defining a constant in angularjs?

本文关键字:何使用 注射剂 常数时 angularjs 定义      更新时间:2023-11-29

当我在angular应用程序中创建常量时,我希望访问$injectable。

这样的事情可能发生吗?如何申报注射剂?

    myApp.constant('myConfig', {     //where does $location get put?
        'searchUri': $location.blah() + "/e/_search?pretty",
        'version': 0.2
    });

在配置块中,使用angular.injector创建一个临时注入器来实例化$location服务。然后使用它来创建myConfig常量。

angular.module('myApp').config(function($provide) {
    function tempRootElementProvider ($provide) {
        $provide.value("$rootElement", angular.element(document));
    }
    var tempInjector = angular.injector(['ng', tempRootElementProvider]);
    var tempLocation = tempInjector.get('$location');
    $provide.constant('myConfig', {
        'searchUri': tempLocation.absUrl() + "e/_search?pretty",
        'version': 0.2
    });
})

$location服务也依赖于$rootElement,因此需要将其作为依赖项添加到临时注入器中。

JSFiddle上的演示。