У меня есть основное состояние, доступное по адресу URL http://myapp/validate
.Угловой UI-маршрутизатор, доступ к родительскому состоянию и динамическое перенаправление пользователя в определенное дочернее состояние
По достижении этого URL-адреса внутри контроллера я выполняю проверку прав и перенаправляю пользователя в одно из двух дочерних состояний.
Это работает, 80% удовлетворены, но использует некоторые ресурсы и вызывает небольшое мерцание в моем приложении, так как в основном я загружаю представление, которое я НЕ ИСПОЛЬЗУЮ.
Есть ли лучший способ достичь этого?
Любые идеи?
angular.module('app.validate').config(['$stateProvider', function($stateProvider) {
$stateProvider
.state('validate', {
url: '/validate',
template: '<ui-view/>',
controller: ['$state', 'HasPermission', function ($state, HasPermission) {
// Here is where I do my logic.
if (HasPermission.get('can-lock-as-admin')) {
$state.go('validate.lock-as-admin');
}
if (HasPermission.get('can-lock-as-clerk')) {
$state.go('validate.lock-as-clerk');
}
}]
})
.state('validate.lock-as-admin', {
templateUrl: 'theUrl',
controller: 'ValidateLockAdminCtrl'
})
.state('validate.lock-as-clerk', {
templateUrl: 'theUrl',
controller: 'ValidateLockClerkCtrl'
})
.state('validate.commit', {
templateUrl: 'theUrl',
controller: 'ValidateCommitCtrl'
});
}]);
Я думаю, вам нужно избавиться от: 'template: ' ',' поскольку рендеринг этого пустого представления может вызвать мерцание. –
Позвольте мне проверить, я не уверен, но если нет никаких «», то детские состояния не будут работать. –
Да. дочерние состояния нуждаются в на родительском –