vue初学, 希望监听flagShowHeadMenuProp值得变化

父组件
trainlist.vue

子组件
menuHeader.vue

trainlist.vue 引入 menuHeader.vue

<template>
  <div>
    <div class="publicList">
      <div
        class="publicListData mt1"
        @click="handleTableClickEvent()"
      >
      <MenuHeader
 style="float:right;"
 :menus="menus"
 :menuChecked="menuChecked"
 @getCheckedHeader="getCheckedHeader"
 :flagShowHeadMenuProp="flagShowHeadMenuProp"
/>
      </div>
    </div>
  </div>
</template>

触发这个函数handleTableClickEvent改变flagShowHeadMenuProp的值,但是子组件

子组件的代码

props: {
  menus: Array,
 menuChecked: Array,
 flagShowHeadMenuProp: Boolean
},
data () {
  return {
    flagAllSelected: false,
 flagShowHeadMenu: false,
 checkedList: []
  }
},
watch: {
  flagShowHeadMenuProp: function (val) {
    console.log('val == ', val)
  }
}
阅读 1.9k
2 个回答
<MenuHeader
 ref="menuHeader"
 style="float:right;"
 :menus="menus"
 :menuChecked="menuChecked"
 @getCheckedHeader="getCheckedHeader"
/>
handleTableClickEvent() {
    this.$refs['menuHeader'].getVal(this.flagShowHeadMenuProp)
}

子组件

methods: {
    getVal(props) {
        // 获取flagShowHeadMenuProp
    }
}

可以去了解下使用$refs传值

我试了你的写法,是可以监听的
父组件

<button @click="flagShowHeadMenuProp = !flagShowHeadMenuProp">handle</button>
<Test :flagShowHeadMenuProp="flagShowHeadMenuProp"></Test>
....
data() {
  return {
    flagShowHeadMenuProp: true
  }
}

子组件:

<template>
  <div>
    {{flagShowHeadMenuProp}}
  </div>
</template>

<script>
export default {
  name: 'test',
  props: {
    flagShowHeadMenuProp: Boolean
  },
  watch: {
    flagShowHeadMenuProp: function(newVal) {
      console.log(newVal)
    }
  }
}
</script>

<style>

</style>

image.png
image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题