Angular.js如何在app.config中使用location.search?

时间:2015-10-19 16:52:37

标签: angularjs

我正在尝试设置$ compileProvider.debugInfoEnabled(false);除非将?debug = true的查询参数传递给url。但是,$ location在app.config函数中不起作用。

myApp.config(['$compileProvider', '$location',
function ($compileProvider, $location) {

    if (!$location.search().debug || $location.search().debug === false) {
        $compileProvider.debugInfoEnabled(false);
    }
}
]);

我收到错误'错误:[$ injector:unpr]未知提供商:$ location'

知道如何做到这一点?

2 个答案:

答案 0 :(得分:3)

形成documentation

  

配置块 - 在提供程序注册和配置阶段执行。只有提供程序和常量才能注入配置块。这是为了防止服务在完全配置之前意外实例化。

$ location是一项服务,没有提供商。获取底层浏览器的位置对象的唯一方法是直接。如果您需要,可以使用$ window来帮助进行单元测试:

if (!$window.location.search.debug || $window.location.search.debug === false) {
    $compileProvider.debugInfoEnabled(false);
}

答案 1 :(得分:0)

您只能将提供者和常量注入配置块。而不是在配置中使用$location,而是尝试在.run()中使用它或使用$locationProvider