2014-11-20 3 views
2

В конкретном государстве пользователь нажимает ссылку на другое состояние, в котором есть условие разрешения, которое проверяет, имеет ли пользователь разрешение. Как остановить изменение состояния до нового, если у пользователя нет разрешения?ui-router - прекратить изменение состояния при разрешении

+1

Есть несколько похожих вопросов, например, [это] (http://stackoverflow.com/a/26702638/1679310). Это должно дать вам некоторую идею, также есть рабочий плункер. –

+0

ОК. Так что не в разрешении, а на $ stateChangeStart - thx – piernik

+0

Точно ... это событие могло/должно быть местом для этих решений AOP –

ответ

1
var routesThatRequireAuth = ['/user', '/account', '/messages']; 
var hasPermisions = false; 

$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) { 
    if($.inArray(toState.url,routesThatRequireAuth)>-1 && !hasPermisions) { 

    event.preventDefault(); 
    // ... 
    // alert message 
    } 
}); 
+0

Добро пожаловать в stackoverflow, @Maciej. Спасибо, что нашли время ответить. В будущем я бы рекомендовал добавить объяснение того, как это отвечает на ответ OP (оригинальный плакат). –

Смежные вопросы