美文网首页
form操作清空

form操作清空

作者: 肥羊猪 | 来源:发表于2022-05-21 16:04 被阅读0次

    以下是vue2的写法
    mixins/clean.js文件下

    let clean = {
        data(){
            return{
                originalData:{},// 存起来的数据
                second:false,// 是否第二次
            }
        },
        // 异步数据获取后,将获取的数据存起来,updated生命周期可以保证拿到的是最新的数据
        updated(){
            // 如果是第一次进入而且已经在调用的组件created生命周期获取到了后端数据
            if(!this.second && this.$options.created) {
                this.second = true;// 确认更新后只走这次
                this.originalData = JSON.parse(JSON.stringify(this.$data))// 将获取的数据进行深拷贝存在originalData,深拷贝防止引用关系
            }
        },
        methods:{
            // 重置数据为初始状态
            clean(){
                // this.form = this.$options.data().form // form被固定,不通用
                Object.assign(this.$data,this.$options.data())// 将数据data重置
            },
            recover(){
                // this.form = JSON.parse(JSON.stringify(this.originalData)) // form被固定,不通用
                Object.assign(this.$data,JSON.parse(JSON.stringify(this.originalData)))// 将form数据返回到获取 后端数据的状态
            }
        }
    }
    export default clean;
    

    调用的vue文件:

    <template>
      <h1>{{ msg }}</h1>
      <button @click="count++">count is: {{ count }}</button>
      用户:<input type="text" v-model="form.username"/>
      密码:<input type="text" v-model="form.password"/>
      <hr/>
      <button @click="clean">清空</button>
      <button @click="recover">恢复返回的数据</button>
    </template>
    
    <script>
    import clean from '../mixin/clean'
    export default {
      name: 'HelloWorld',
      mixin:[clean],
      props: {
        msg: String
      },
      data() {
        return {
          count: 0,
          form:{
            username:'',
            password:'',
          }
        }
      },
      created(){
        setTimeout(()=>{
          this.form={
            username:'小郑',
            password:'123456'
          }
        },1000)
      },
      methods:{
      }
    }
    </script>
    
    

    不过Object.assign(this.$data,this.$options.data())这种方式直接复原了整个data,比如这里的count,累加后还是被清除了0,所以这个只适合用在data只有form的情况,
    不过我们在开发中,还是可以广泛用下面这句重置form

    this.form = this.$options.data().form
    

    相关文章

      网友评论

          本文标题:form操作清空

          本文链接:https://www.haomeiwen.com/subject/hwycprtx.html