Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 将Angular.js与ui路由器和未保存更改的指令一起使用,在选择保留和保存时会丢失字段数据_Angularjs_Modal Dialog_Angular Ui Router - Fatal编程技术网

Angularjs 将Angular.js与ui路由器和未保存更改的指令一起使用,在选择保留和保存时会丢失字段数据

Angularjs 将Angular.js与ui路由器和未保存更改的指令一起使用,在选择保留和保存时会丢失字段数据,angularjs,modal-dialog,angular-ui-router,Angularjs,Modal Dialog,Angular Ui Router,我打电话给我的出口确认指令,检查表格是否脏了。我使用的是一个模式,它为用户提供了保留、保存或离开表单的选项。问题是,当我选择保留并保存时,字段数据丢失。我正在寻找另一种方法来警告未保存的更改,而不使用event.preventDefault()并实际保存字段数据 <form class="form-inline" role="form" name="AddScacTask" novalidate confirm-on-exit> app.directive('confirmOnEx

我打电话给我的出口确认指令,检查表格是否脏了。我使用的是一个模式,它为用户提供了保留、保存或离开表单的选项。问题是,当我选择保留并保存时,字段数据丢失。我正在寻找另一种方法来警告未保存的更改,而不使用event.preventDefault()并实际保存字段数据

<form class="form-inline" role="form" name="AddScacTask" novalidate confirm-on-exit>

app.directive('confirmOnExit', ['modalService', '$rootScope', '$stateParams', '$state', function (modalService, $rootScope, $stateParms, $state) {
return {
    restrict: 'A',       
    link: function (scope, elem, attrs, formCtrl) {

        onRouteChangeOff = $rootScope.$on('$stateChangeStart', routeChange);

        function routeChange(event, newState, newParams, fromState, fromParams) {

            if (!scope.AddScacTask.$dirty) {
                return;
            }

            var modalOptions = {
                closeButtonText: 'No, I\'ll stay and save them.',
                actionButtonText: 'Yes, Leave and Ignore Changes',
                headerText: 'Unsaved Changes',
                bodyText: 'You have unsaved changes. Do you want to leave the page?'
            };

            modalService.showModal({}, modalOptions).then(function (result) {

                if (result) {
                    onRouteChangeOff(); //Stop listening for location changes
                    $state.transitionTo(newState); //Go to page they're interested in
                } else {
                    $state.transitionTo(fromState); //Stay on the page and have tab revert to fromState
                }
            });
            return;
        }
    }
};

app.directive('confirmOnExit'、['modalService'、'$rootScope'、'$stateParms'、'$state',函数(modalService、$rootScope、$stateParms、$state){
返回{
限制:“A”,
链接:函数(范围、元素、属性、formCtrl){
onRouteChangeOff=$rootScope.$on(“$stateChangeStart”,routeChange);
函数routeChange(事件、newState、newParams、fromState、fromParams){
如果(!scope.AddScacTask.$dirty){
回来
}
var modalOptions={
closeButtonText:“不,我会留下来救他们。”,
actionButtonText:'是,保留并忽略更改',
标题文字:“未保存的更改”,
bodyText:“您有未保存的更改。是否要离开该页?”
};
showModal({},modalOptions).then(函数(结果){
如果(结果){
onRouteChangeOff();//停止侦听位置更改
$state.transitiono(newState);//转到他们感兴趣的页面
}否则{
$state.transitiono(fromState);//停留在页面上,让选项卡还原为fromState
}
});
回来
}
}
};

}]))

我已经删除了event.preventDefault();对于一个不同的问题,这是绝对必要的