簡體   English   中英

使用 UI-router 導航到 fromState

[英]Use UI-router to navigate to fromState

AngularJS UI-router 有一個有用的參數“fromState”,它允許我存儲用戶在更改 state 時來自哪里。 我正在嘗試實現一個系統,如果用戶被帶到訂閱/登錄/注冊 state,則該系統會將用戶帶回他們離開的地方。 我捕獲 fromState,他們執行操作,然后如果我的 fromState 變量被設置,用戶將被帶回 state。 但它不起作用:示例:

.run(function ($rootScope, $state, $timeout, $location, $anchorScroll) {
  $rootScope.$on('$locationChangeSuccess', function (event, toState, fromState) {
    $rootScope.loggedFromState = fromState;
    console.log($rootScope.loggedFromState);

輸出“http:// my-app-url /page-name”

然后我想做這樣的事情:

$state.go($rootScope.loggedFromState);

但這不起作用。 state 必須是 state 名稱 + 參數,但 fromState 是 URL 格式。 如何導航到 $rootScope.loggedFromState (" http://my-app-url/page-name ")?

更合適的方法是使用 ui-router hooks: https://ui-router.github.io/guide/transitionhooks

$transitions.onStart({}, function(transition) {
    console.log(
    "Transition from " + transition.from().name +
    " to " + transition.to().name
    );

    let from = transition.from().name;
    // validation
    // if validation fails abort transition
    transition.abort();
    // and redirect somewhere else
    $state.go(from);

});

然后可以取 state 名稱:

let from = transition.from().name;

首先中止當前轉換:

transition.abort();

然后重定向:

$state.go(from);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM