Prevent a stateChange with angular ui router without using $rootScope

后端 未结 3 550
独厮守ぢ
独厮守ぢ 2021-01-31 08:55

My user can leave a state but before I want to show a modal dialog \"Do you want to save?\"

ONLY if the user data is dirty that means changed.

What I do NOT wan

相关标签:
3条回答
  • 2021-01-31 09:14

    (1) According to the docs under State Change Events

     $rootScope.$on('$stateChangeStart', 
          function(event, toState, toParams, fromState, fromParams){ 
              event.preventDefault(); 
              // transitionTo() promise will be rejected with 
              // a 'transition prevented' error
     })
    

    You could change $rootScope to $scope wherever appropriate and works.

    Under Attach Custom Data to State Objects, you can pass on custom data.

    (2) I'm not sure what you're asking but factories/services/providers would really help.

    0 讨论(0)
  • 2021-01-31 09:19

    Using $transitions.onStart (angular-ui-router 1.0.0-rc) you can return a boolean. If false the transition will be cancelled.

    $transitions.onStart({}, function (trans) { 
        var answer = confirm("Want to leave this page?")
        if (!answer) {
            return false;
        }
    });
    

    Here is the documentation: https://ui-router.github.io/ng1/docs/latest/modules/transition.html#hookresult

    0 讨论(0)
  • 2021-01-31 09:19

    Though at the time of writing it is not a part of the stable release, the 1.0 release of the UI-router will use the return value of onEnter/onExit to prevent navigation.

    See GitHub issue 2219

    0 讨论(0)
提交回复
热议问题