AngularJS Route:当切换路由时,表单在重新加载页面后变空?

时间:2014-10-24 17:32:19

标签: angularjs angular-ui-router

我有一个使用AngularJS路由构建的简单应用程序,它为每个路径加载控制器和模板。我在分隔路径/模板上有一个注册表单和登录表单。假设我转到登录表单(/#/ login)并输入我的用户名/密码,如果我点击“注册”(重定向到/#/ register),然后我回到浏览器,它会返回我到/#/ login但是表单现在是空的;我输入的信息已被删除。

预期的行为是表单数据仍然存在。

无论如何要做到这一点(没有手动缓存服务中的数据)?

我猜测页面何时发生变化,Angular正在抛弃旧的模板数据并再次重新加载模板。有没有办法代替缓存该页面模板/ DOM并在用户返回该路径时重新加载它(而不是下载并显示新的模板文件)?

1 个答案:

答案 0 :(得分:1)

嗯,这有点棘手。浏览器应该开箱即可实现这种功能。 Firefox开始围绕这个"问题"做一些工作。但我真的不知道它的现状。

或者,您可以使用LocalStorage的一些javascript来实现此功能。您正在使用AngularJS,您可以创建一个封装此功能的指令,以便在多个地方使用。

基本上,您需要创建一个将字段转换为唯一标识符和值的机制。每次用户在字段上键入时,都会更新商店。如果用户"完成"在表单上的交互,你清理商店的价值。

你也可以获取一个jQuery插件,然后创建一个使用该插件的指令。 https://github.com/kugaevsky/jquery-phoenix(从未测试过)。

TL:DR

使用DOM属性/属性或类似的东西,你无能为力。 你需要弄清楚一些javascript来实现这一点。