sto*_*sky 1 forms vue.js vue-component vuejs2 v-model
这是我在做什么: 我有一个表单集组件,它通过 ajax 获取数据来填充表单集。用户可以从表单修改这些数据并提交。
问题:这很好用。但是,我注意到如果我导航到另一个页面然后点击浏览器“返回一页”按钮,表单在那里(模板中的 DOM)但是是空的。v-model 输入字段中不再有数据绑定...
大多数关于此行为的帖子都与我不使用的 vue-router 相关。
我认为它可能需要处理生命周期钩子......实际上,在我的组件上,我在“挂载”时获取数据。但是,如果是这样,哪个生命周期?
我也尝试过“保持活力”但没有成功。
我在我的组件上放了一些详细的日志,试图在浏览器返回时捕获生命周期钩子,但没有打印出来......
beforeCreate: function() {
console.log('---- BEFORE CREATE ----> ')
},
created: function() {
console.log('---- CREATED ----> ')
this.getModelObjects();
},
beforeMount: function() {
console.log('---- BEFORE MOUNT ----> ')
},
mounted: function() {
console.log('---- MOUNTED ---->')
this.getModelObjects();
},
beforeUpdate: function() {
console.log('---- BEFORE update ----> ')
},
updated: function() {
console.log('---- UPDATED ----> ')
},
beforeDestroy: function() {
console.log('---- BEFORE DESTROY ----> ')
},
destroyed: function() {
console.log('---- DESTROYED ----> ')
},
Run Code Online (Sandbox Code Playgroud)
任何的想法?
好的,我用最简单的方法解决了这个问题!
实际上,使用localStorage(https://fr.vuejs.org/v2/cookbook/client-side-storage.html)并不能解决问题。
无论如何,它需要绑定到生命周期钩子才能被触发。因此,由于我已经将后端数据库上的这些数据与 Axios 同步,这会增加冗余的复杂性并最终出现相同的问题。
我还注意到,只有 v-model 字段是相关的。{{ var }} 不是。所以,我最终认为这真的与形式有关。
相反,我autocomplete="on"在我的表格中使用。
<form method="post" autocomplete="on">
.....
</form>
Run Code Online (Sandbox Code Playgroud)
但是,实际上,默认情况下自动完成是“开启”的:
https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete
默认情况下启用持久性功能。将 autocomplete 属性的值设置为 off 将禁用此功能。
我不记得为什么,但我autocomplete="off"在我的表格中使用了 :-( ... 这可能就是为什么我没有看到太多关于它的帖子......
现在,如果用户单击页面上的链接,然后使用“返回一页”按钮向后导航,则 v-model 绑定字段就在那里。
| 归档时间: |
|
| 查看次数: |
3088 次 |
| 最近记录: |