zoukankan      html  css  js  c++  java
  • Vue父子组件传值,使用watch监听值变化

    父组件往子组件传值
    组件传值
    一、在父组件中引入子组件
    二、在父组件中定义data值
    三、给子组件绑定属性值
    四、子组件中定义props
    watch监听值变化
    代码
    子组件往父组件传值
    组件传值
    父组件往子组件传值

    组件传值

    一、在父组件中引入子组件

    <test :obj="obj" v-if="show"/>
    
    import test from './test/test'
    
    export default {
      components: { 
        test
       }
     }

    二、在父组件中定义data值

    data () {
        return {
          show: false, // 控制子组件显示
          obj: {
            name: ''
          }
        }
      }

    三、给子组件绑定属性值

    <test :obj="obj" v-if="show"/>

    四、子组件中定义props

    export default {
      props: {
        obj: Object
      }
    }

    子组件watch监听值变化

    //定义一个watch监听,可以监听父组件值的变化,获取到值,
    //假如父组件这边是一个下拉框,每次下拉的时候传参到子组建,子组建监听到变化之后取到值
    watch:{ obj:{ handler(n,o){ console.log('echarts子组件中的参数: ' + n) this.company_id = n //赋值给data }, deep:true// 深度监听父组件传过来对象变化 } },

    代码

    父组件

    <template>
      <div>
        <button @click="controlShow(true)">显示子组件</button>
        <button @click="controlShow(false)">隐藏子组件</button>
        <button @click="testName('aaa')">子组件传值aaa</button>
        <button @click="testName('bbb')">子组件传值bbb</button>
        <test :obj="obj" v-if="show"/>
      </div>
    </template>
    
    <script>
    import test from './test/test'
    
    export default {
      name: 'HelloWorld',
      components: { 
        test
      },
      data () {
        return {
          show: false, // 控制子组件显示
          obj: {
            name: ''
          }
        }
      },
      methods: {
        testName (e) {
          this.obj.name = e
        },
        controlShow (e) {
          this.show = e
        }
      }
    }
    </script>
    
    <style scoped>
    </style>

    子组件

    <template>
      <div>
        <h1>我是子组件!!!</h1>
        name值为:{{obj.name}}
      </div>
    </template>
    
    <script>
    export default {
      name: 'test',
      props: {
        obj: Object
      },
      data () {
        return {
        }
      },
      watch: {
        obj: {
          handler (n, o) {
            console.log('子组件中的name值: ' + n.name)
          },
          deep: true // 深度监听父组件传过来对象变化
        }
      }
    }
    </script>
    
    <style scoped>
    </style>
  • 相关阅读:
    HDU 5542 The Battle of Chibi (离散化+树状数组优化DP)
    UVaLive 7637 Balanced String (构造)
    ZOJ 3512 Financial Fraud (左偏树)
    HDU 1512 Monkey King (左偏树+并查集)
    POJ 2311 Cutting Game (博弈)
    POJ 2348 Euclid's Game (博弈)
    Gym 101142C CodeCoder vs TopForces (搜索)
    Gym
    Spring注解
    sql语句中的占位符?有什么作用
  • 原文地址:https://www.cnblogs.com/huoyz/p/14511916.html
Copyright © 2011-2022 走看看