A colleague asked our dev group how an AngularJS app could be configured prompt a user before leaving an unsaved form.
One suggested approach was to use the run block and watch the $stateChangeStart event. The only problem with this is that the form is really only visible from the view and controller in which its defined.
I suggested writing a directive that could be added to the form element. This is what it looks like:
app.directive('formExitPrompt', function ($rootScope, $modal) {
return {
require: 'form',
restrict: 'A',
link: function (scope, el, attrs, formCtrl) {
$rootScope.$on('$stateChangeStart', promptUser);
function promptUser () {
if (formCtrl.$dirty) {
var modalInstance = $modal.open({
/*
* Modal configuration goes here!
*/
});
}
}
}
}
Here's a plunker with formExitPrompt in action.
No comments:
Post a Comment