1

我有一份冗长的表格,客户需要填写。如果他们单击页面上的链接,它将离开该控制器,他们将丢失他们可能已经输入的任何数据。

如果我可以确定表单尚未保存,我如何拦截对页面上链接的任何点击,以便我可以询问用户是否要先保存表单?

还没有代码-对不起。非常感谢。

4

2 回答 2

0

我编写了一个 angularjs 指令,您可以将其应用于任何表单,如果用户重新加载页面或导航离开,它将自动监视更改并向用户发送消息。@see https://github.com/facultymatt/angular-unsavedChanges

希望你发现这个指令很有用!

于 2013-08-22T15:53:03.730 回答
0

对于迟到的答案感到抱歉,但也许有人偶然发现了这个并发现它很有用。我遇到了同样的问题,一开始我尝试使用应用于表单元素的 ng-dirty 类,但是因为我有一些自定义控件,所以当我更改某些字段时不会应用 ng-bind。

到目前为止,我发现的最好方法是使用$locationChangeStart事件检测模型何时更改。

$scope.$on('$locationChangeStart', function (event, next, current) {
    //we are about to leave the page so it's time to see if the form was modified by the user
    if (!$scope.isFormClean())
    {
        event.preventDefault();
    }                    
});
于 2014-10-20T10:21:36.533 回答