我正在尝试设置$ 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'
知道如何做到这一点?
答案 0 :(得分:3)
配置块 - 在提供程序注册和配置阶段执行。只有提供程序和常量才能注入配置块。这是为了防止服务在完全配置之前意外实例化。
$ location是一项服务,没有提供商。获取底层浏览器的位置对象的唯一方法是直接。如果您需要,可以使用$ window来帮助进行单元测试:
if (!$window.location.search.debug || $window.location.search.debug === false) {
$compileProvider.debugInfoEnabled(false);
}
答案 1 :(得分:0)
您只能将提供者和常量注入配置块。而不是在配置中使用$location
,而是尝试在.run()
中使用它或使用$locationProvider
。