zoukankan      html  css  js  c++  java
  • 自定义组件双向数据绑定,父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>
  • 相关阅读:
    一次使用布隆过滤器的经历
    从C#到Java(effective-java阅读笔记)
    从C#到Java(泛型)
    Dubbo学习-第一章
    从C#到Java(Spring拦截器HandlerInterceptor )
    从C#到Java(Aspect)
    从C#到Java(SpringBoot入门)
    从C#到Java(lambda比较)
    Redis添加List
    Three.js学习(相机,场景,渲染,形状)
  • 原文地址:https://www.cnblogs.com/dianzan/p/14822414.html
Copyright © 2011-2022 走看看