iview中的input表单中输入的数据刷新后不会被清除的方法

表单中的数据填写到一半刷新网页的话会清楚里面已经储存的数据,这样的体验对于用户来说很不好,此篇文章是在vue中使用了iview中input组件,通过sessionStorage这个对象来优化。

选择的是sessionStorage,选择的原因vue是单页面应用,操作都是在一个页面跳转路由,另一个原因是sessionStorage可以保证打开页面时sessionStorage的数据为空,而如果是localStorage则会读取上一次打开页面的数据。

这里用到了sessionStorage的setItem和getItem两个方法:
setItem方法是用来储存数据到sessionStorage对象中

 sessionStorage.setItem("key", "value");

getItem是用来从sessionStorage中取出数据

 var value = sessionStorage.getItem("key"); 

接下来看一个实例:

<Input @on-blur="saveToStorage" type="text"  v-model="projectForm.collectionName"  />

这里设置的是当输入框失去焦点时触发时会触发saveToStorage函数

  saveToStorage(){
        if (window.sessionStorage) {
          this.projectName1 = this.projectForm.collectionName
          let value =this.projectName1
          window.sessionStorage.setItem("pName",value)
        }
        },

这里先对浏览器进行了一个判断,看是否支持sessionStorage,然后在input标签中用了v-model来双向绑定数据,这里的projName1写的有些多余了,可以直接设置value来接受用户输入的值,然后用sessionStorage里面的setItem方法来保存这个值,其中key的值可以自己随便设置,但是一会取出用户输入的值时要输入相应的key。

因为这里是在vue中使用的那么我们取出sessionStorage里面值的操作可以写在created()里面:

created(){
     if (window.sessionStorage) {
        const name = window.sessionStorage.getItem("pName");
        if(name !='' || name != null){
          this.projectForm.collectionName=name
        }
      };
      }

至此表单中的数据就不会因为刷新而消失。本人技术不够,如果有错误或者有更好的办法就欢迎大家指出。

Logo

前往低代码交流专区

更多推荐