使用AngularJS和ng-submit记住密码。
原因:该问题的出现是因为在表单的HTML代码中存在一些混淆。在表单被提交时,你想让它跳转到"/#/dashboard/login"这个页面,还是执行"ng-submit"中的"login()"方法?目前情况是,浏览器会忽略"ng-submit",而选择执行表单的action属性。如果你想让它跳转到"/#/dashboard/login"作为一个新页面,只需移除"ng-submit"和"onsubmit"属性即可,这样它会像正常情况下一样工作。如果你想执行"ng-submit"中的"login()"方法,则需要移除"action"和"onsubmit"属性。Angular会自动阻止表单的提交,当一个带有ng-submit的表单没有action属性时。通过这种方式,浏览器不会提示是否记住密码,因为表单实际上没有被提交到任何地方。我猜这是浏览器还没有跟上单页面应用程序的时代的一个领域,在我所知道的范围内,没有直接的解决方法。
解决方法:一个解决方法是在HTML中添加一个隐藏的表单,将用户名和密码设置为与用户在主表单中输入的相同,并在调用"ng-submit"的同时将该隐藏表单提交到一个iframe中。可以参考这个链接(How can I get browser to prompt to save password?)了解如何实现这个方法的更多细节。
我只是添加了action属性,使浏览器识别该表单并欺骗它记住密码。没有action属性时表单也可以工作。onsubmit="return false;"防止执行action。只有ng-submit在起作用。
问题是动态生成的登录表单。将表单放入index.html后,它按预期工作。我猜这是一个安全问题。
然后出现的问题是自动填充时ngModels没有得到更新。经过一些搜索,我找到了解决该问题的方法这里。在AngularJS 1.2+中,这个问题应该已经解决了。