我希望(默认情况下)隐藏调试语句。
$logProvider.debugEnabled(false);但我希望开发人员通过某种路径参数(或类似的方式)访问调试语句。我们有多个"Dev“服务器,希望快速浏览调试语句。
我想要做的是给一个网址,例如:
myapp.com/mypage.html?debug=true启用$locationProvider进行调试。
我想做这样的事情:
$urlParams = $location.search();
if($urlParams.debug) {
$logProvider.debugEnabled(true);
}在config...but中,我无论如何不能使用$location injection...is在配置section...or中执行某种逻辑--更好的是,有方法可以动态地配置和应用程序吗?
发布于 2014-12-17 18:33:24
因此,不幸的是,我无法获得上面/下面使用‘s路由器的$stateProvider发布的解决方案。
以下是我想出的解决方案:
创建自己的提供程序,其中包含一个用于获取查询参数的函数,该函数基于以下解决方案:How can I get query string values in JavaScript?
app.provider("query",function(){
return{
getParamsByName: function(name){
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
},
$get: function(){ return {} }
};
});然后,在我的控制器中,我需要做的就是将queryProvider添加到配置中,
然后调用getParamsByName(“调试”)
发布于 2014-12-16 19:12:14
例如,您可以使用UI-router (coffeescript):
'use strict'
angular.module 'App'
.config ($stateProvider, $urlRouterProvider) ->
$stateProvider
.state 'index',
abstract: true
url: '/'
templateUrl: '<div ui-view></div>'
controller: 'indexController'
resolve:
debugResolved: ($stateParams, $logProvider) ->
if $stateParams.debug == 'true'
$logProvider.debugEnabled(true)这只是一个例子,我没有尝试过,但它应该能像预期的那样工作。您可以在这里查看有关UI-路由器的更多信息:https://github.com/angular-ui/ui-router。
https://stackoverflow.com/questions/27511770
复制相似问题