имя состояния трансляции Angular js $stateChangeStart

#angularjs #angular-ui-router #angular-factory

#angularjs #angular-пользовательский интерфейс-маршрутизатор #angular-фабрика

Вопрос:

Я хочу создать фабрику, которая должна возвращать имя текущего состояния, я попробовал этот код внутри контроллера:

 $rootScope.$on('$stateChangeStart', function (e, toState, toParams, fromState, fromParams) {
     $rootScope.tabName  = fromState.name;          
 });
 

но эта информация доступна только в том случае, если вызывается конкретный контроллер, я хочу сделать эту информацию доступной во всем проекте.

Ответ №1:

Вы можете сделать это наоборот.

 angular.module('app')
.run(['$state', '$cookies', '$rootScope', function($state, $cookies, $rootScope) {
    $rootScope.$on('$stateChangeStart', function(e, toState, toParams, fromState, fromParams) {

        $rootScope.tabName  = fromState.name;       
    });
});
 

Вместо того, чтобы помещать его в контроллер, используйте его в методе запуска модуля, который будет вызываться во время инициализации приложения.