【问题标题】:Form values lost when returning to page返回页面时表单值丢失
【发布时间】:2014-11-21 04:05:56
【问题描述】:

我有问题。

我正在构建一个包含多个页面的网站。
在一个页面中有一个表单(其中包含一些 AngularJS),当用户单击提交按钮时,会出现第二个页面,用于确认表单提交。
如果有任何错误,它将显示一条带有返回按钮的错误消息消息 (javascript:history.go(-1))。
当用户单击此返回按钮时,表单页面会再次显示,但所有字段都为空白(页面似乎完全重新加载......)。无论如何,对于没有 AngularJS 的其他形式,这种机制可以正常工作...
怎么了?

谢谢! :-)

PS:无论如何,如果有任何错误,表单页面会检查禁用提交按钮,但我不明白为什么当用户通过后退按钮返回页面时页面会重新加载,而其他表单则没有不会发生...

【问题讨论】:

  • 依赖历史记录不是个好主意,您可以将表单详细信息保存在 cookie 中
  • 将表单详细信息保存在 cookie 中是不安全的。使用会话 Cookie 或保存到数据库。

标签: javascript html angularjs forms


【解决方案1】:

如果两个页面属于同一个应用程序(在同一个 app.js 下),那么您可以将表单的值存储在 $rootScope 变量中,而不是 $scope。

也可以使用 $location.Path

进行导航

【讨论】:

  • 我可以使用 $rootScope 即使页面不同(不是单页应用程序,而是不同的 HTTP 请求),但使用相同的 app.js?
  • 是的。如果您看到变量的范围,则 $scope 仅适用于该控制器,适用于该 HTML 页面,但 $rootScope 处于应用程序级别,因此除非再次调用 app.js,否则值将保持不变。拥有 $rootScope 的主要目的是在同一应用的控制器之间共享数据。
猜你喜欢
  • 1970-01-01
  • 2019-03-16
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多