• 自定义组件双向数据绑定,父v-model,子value用.$emit('input', newVal)


    父组件

    <template>
      <div>
        <p>我是父级组件</p>
        <p>父级组件内容:{{ text }}</p>
        <p><button @click="onChange">改变内容</button></p>
        <hr>
        <child v-model="text"></child>
      </div>
    </template>
    <script>
    import Child from './child'
    export default {
      components: {
        Child
      },
      data() {
        return {
          text: '我是父级组件的内容'
        }
      },
      methods: {
        onChange() {
          this.text = '我是由父级组件触发改变了内容'
        }
      }
    }
    </script>
    <style scoped>
    </style>

    子组件

    <template>
      <div>
        <p>我是子组件</p>
        <p>子组件内容:{{ myValue }}</p>
        <p><button @click="onChange">改变内容</button></p>
      </div>
    </template>
    <script>
    export default {
      props: {
        //此处一定要用value
        value: {
          type: String
        }
      },
      data() {
        return {
          myValue: this.value
        }
      },
      methods: {
        onChange() {
          this.myValue = '我是由子组件触发改变了内容'
        }
      },
      watch: {
        //监听prop传的value,如果父级有变化了,将子组件的myValue也跟着变,达到父变子变的效果
        value(newVal) {
          this.myValue = newVal
        },
        //监听myValue,如果子组件中的内容变化了,通知父级组件,将新的值告诉父级组件,我更新了,父级组件接受到值后页就跟着变了
        myValue(newVal) {
          this.$emit('input', newVal)
        }
      }
    }
    </script>
    <style scoped>
    </style>
  • 相关阅读:
    MySQL命令2
    MySQL命令1
    前端之HTML1
    linux命令之df dh
    python call java jar
    redis-py中的坑
    YARN应用程序的开发步骤
    Yarn的服务库和事件库使用方法
    SSH无密码验证
    在centos 6.5 在virtual box 上 安装增强版工具
  • 原文地址:https://www.cnblogs.com/dianzan/p/14822414.html
Copyright © 2020-2023  润新知