Angular js directive to show alert for browser back button when unsaved data in form

前端 未结 2 1260
予麋鹿
予麋鹿 2021-01-03 17:17

I\'m a newbie to angularjs.Is there any way to show alert when a form has unsaved data and user presses browser back button. Any pointers to how to achieve this would be app

相关标签:
2条回答
  • 2021-01-03 17:49

    Yes, I just gave this answer some minutes ago to another user, create a watch at root scope level to catch location changing:

    $rootScope.$watch(function() { // fixed function declaration
       return $location.path();
       },  
       function(newValue, oldValue) {  
          if (newValue != oldValue) { // Update: variable name case should be the same
             // here you can do your tasks
          }
          else {
          }
       },
       true);
    
    0 讨论(0)
  • 2021-01-03 17:50

    As you've discovered, you can write a custom directive to watch for changes. Your updated code is on track, however there are a few things you could do to improve:

    1. Your directive references the form by name, which limits it's re-usability. For example, what if you wanted to use this same directive on a form called myOtherForm? Currently using $scope.myForm.$dirty limits this flexibility. Instead, a better approach is to bind to the formController in your linking function.

    2. There really isn't a need to watch $location.path() since binding to $locationChangeStart will do the same thing.

    I've written an angularjs directive that you can uses the approaches I've discussed above. @see https://github.com/facultymatt/angular-unsavedChanges

    Hopefully you find this directive informative. Feel free to learn from it or even use it in your project.

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