5

Постановки задачи:Как получить предыдущее состояние с помощью Params Ui маршрутизаторов

У меня есть кнопка «Добавить комментарий», я должен быть в состоянии добавить комментарий только тогда, когда я вошел в систему.

Но проблема в том, что я не могу вернуться на страницу «Добавить комментарий» после входа в систему, потому что я не знаю предыдущего состояния или не могу получить предыдущее состояние.

Есть ли какое-нибудь более чистое решение? Должна ли у меня страница входа в систему как модальная, а не новая страница?

Я видел все вопросы, связанные с предыдущим состоянием, а также возможные ответы (да, я беру около $ rootscope и $ stateChangeSuccess). Но он явно не выдвигает решения.

Другое возможное решение, как показано ниже http://christopherthielen.github.io/ui-router-extras/example/previous/index.html#

Я также видел https://github.com/angular-ui/ui-router/issues/92. но опять же, я не был уверен, что это правильный ответ.

Может ли кто-то четко сформулировать хорошее решение. Использует ли корнеплод хороший?

+0

Вы можете добавить 'параметр returnUrl' (или' returnState') в состоянии входа в системе, а затем установить его на перенаправление в состоянии входа. –

+0

Я думал об этом решении. но тогда мне нужно подумать о параметрах, которые будут переданы вместе с возвращаемым url. это делает это немного утомительным –

ответ

13

Должна ли у меня страница входа в систему как мода, а не новая страница? Это дизайнерское решение. Вы можете использовать все, что подходит вашему приложению, и по своему вкусу.

Использует ли корнеплод хороший? Я чувствую его довольно хорошее решение. Вот как бы я это сделать:

Сохранить предыдущее состояние вручную:

Создать изменение состояния слушателя:

$rootScope.$on('$stateChangeSuccess', function(event, to, toParams, from, fromParams) { 
     //save the previous state in a rootScope variable so that it's accessible from everywhere 
     $rootScope.previousState = from; 
    }); 
    }]); 

Вместо использования UI-sref, поставить функцию щелчка для кнопки комментария ,

$scope.commentHandler = function(){ 
    //check if user is logged in, let the user post the comment 

    //else take him to login page 
} 

Затем вы можете использовать $state.go($rootScope.previousState.name) после входа пользователя, чтобы вернуться на комментарий страницу.

-OR -

Вы могли бы предоставить небольшую регистрационную форму на месте «Оставить комментарий» кнопку, если пользователь не вошел в

+1

Это сработало хорошо для меня. – AdeelMufti

0

Для щ-маршрутизатор v1.0.0 +, государственные события изменения. были deprecated.

Обновленная версия слушателя изменений Arjun's состояния будет

$transitions.onStart({}, function (transition) { 
    $rootScope.previousState = transition.from(); 
}); 

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

  • Нет связанных вопросов^_^