【问题标题】:Avoid unsaved changes pop up after form submission - AngularJS避免在表单提交后弹出未保存的更改 - AngularJS
【发布时间】:2017-02-16 08:27:32
【问题描述】:

当我提交登录表单并在成功验证后重定向到另一个页面时,我收到一个弹出消息,说我有未保存的更改。我相信只有在您重定向到另一个页面而不将更改保存到表单时才会显示此弹出窗口。

我尝试调用表单的$setPrestine()$setUntouched() 函数并将模型设置为null,但弹出窗口仍然显示。

我该如何正确处理这个问题?谢谢

更新

我发现问题是由我正在处理的项目中使用的角度模块(角度敏捷性)引起的。经过大量的跟踪,我找到了解决方案。

【问题讨论】:

  • 将更改保存到表单是什么意思。您的意思是更新数据库,即后端!对吗??
  • 我实际上并没有在此处保存任何内容,因为我只是在进行身份验证,然后如果身份验证成功则重定向到我的主页。但是,当我尝试重定向到我的主页时,会弹出一个窗口询问我是否真的要导航因为我有未保存的更改。
  • @manishkumar 我的意思是保存您在表单中所做的更改。
  • 在我的回答中寻找替代解决方案 :)
  • 重定向是如何发生的?它是 POST 303 重定向吗?还是使用 $location 服务进行更改?

标签: angularjs forms


【解决方案1】:

你有各种各样的课程

ng-原始,ng-脏 如果您对它们执行操作,它将应用于输入

您可以学习并相应地使用它。 read this

<script>
  angular.module('formExample', [])
    .controller('FormController', ['$scope', function($scope) {
      $scope.userType = 'guest';
    }]);
</script>
<style>
 .my-form {
   transition:all linear 0.5s;
   background: transparent;
 }
 .my-form.ng-invalid {
   background: red;
 }
</style>
<form name="myForm" ng-controller="FormController" class="my-form">
  userType: <input name="input" ng-model="userType" required>
  <span class="error" ng-show="myForm.input.$error.required">Required!</span><br>
  <code>userType = {{userType}}</code><br>
  <code>myForm.input.$valid = {{myForm.input.$valid}}</code><br>
  <code>myForm.input.$error = {{myForm.input.$error}}</code><br>
  <code>myForm.$valid = {{myForm.$valid}}</code><br>
  <code>myForm.$error.required = {{!!myForm.$error.required}}</code><br>
 </form>

现在您可以看到有多种方法可以做到这一点。
好好看看并申请。快乐编码!

或者你可以参考这个answer

【讨论】:

  • 抱歉,我发现这个问题是由我项目中使用的角度模块(angular-agility)引起的。经过大量跟踪后,我找到了解决方案。无论如何感谢您的时间:)
  • 您可以发布答案。至少有相同问题的其他人可能会发现它很有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-01
  • 1970-01-01
相关资源
最近更新 更多