2014-12-16 5 views
2

Я хочу (по умолчанию) имеет отлаживать заявление скрыты

$logProvider.debugEnabled(false); 

, но я хочу, чтобы разработчики доступа к отладочным через какое-то путь пары (или что-то вроде этого). У нас есть несколько серверов «Dev» и вы хотите быстро просмотреть инструкции отладки.

Что я хотел сделать, было дано URL, такие как:

myapp.com/mypage.html?debug=true 

позволяют $ locationProvider для отладки.

Я хотел сделать что-то вроде:

$urlParams = $location.search(); 
if($urlParams.debug) { 
    $logProvider.debugEnabled(true); 
} 

в конфигурации ... но я не могу использовать $ инъекции местоположение ... есть в любом случае, чтобы сделать какую-то логику в разделе конфигурации .. .or еще лучше, есть ли способ настройки и приложения на лету?

ответ

0

Таким образом, я, к сожалению, не смог получить решение, которое было опубликовано выше/ниже, используя $ StateProvider UI.router.

Вот решение, которое я придумал:

Создать собственный Провайдер содержит функцию для получения запроса Params, на основе решения здесь: 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 {} }   
}; 
}); 

Затем в моем контроллере все, что мне нужно сделать, это добавить запросProvider в config,

, а затем вызвать getParamsByName («debug»)

0

Вы можете использовать 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