2017-01-17 3 views
4

У меня есть служба, которая проверяет, имеет ли текущий пользователь доступ к маршруту. Я хотел бы, чтобы эта служба была вызвана как часть разрешения, так что просмотр никогда не загружается, если пользователь не должен иметь доступ. Однако в функции разрешения зависимость $ state еще не содержит фактического состояния маршрутизатора.Как получить текущий маршрут в пределах функции разрешения?

.state('home', { 
    url: '/home', 
    templateUrl: 'app/home.html', 
    controller: 'HomeController', 
    controllerAs: 'main', 
    resolve: { 
    allowed: function(auth, $state) { 
     return auth.isAllowed($state.current.name); 
    } 
    }, 
}) 

... однако $state.current.name пусто в точке, она используется. Как передать имя штата (т. Е. «Домой»)?

ответ

4

Попробуйте с

resolve: { 
    allowed: function(auth) { 
     return auth.isAllowed(this.self.name); 
    } 
}, 
0

Для пользовательского интерфейса маршрутизатора 1.0+: инъекционные $ State $, чтобы получить доступ к будущему состоянию (к которому переход в процессе). Однако, если решение находится в родительском или абстрактном состоянии, оно укажет на это абстрактное состояние, а не на дочернее состояние, к которому относится переход.

resolve: { 
    allowed: function($state$) { 
    ... 
    } 
}