Vue.js中父组件获取子组件属性以及子组件传递属性给父组件

如何传递?

首先先定义好父组件和子组件,然后在父组件中引入子组件。
在父组件中,想用主动调用子组件的方法或者获取属性,可以通过获取子组件的引用ref。在子组件上定义一个属性ref='引用名',父组件就可以通过this.$refs.引用名的形式获取子组件实例,this.$refs.引用名.属性名的形式获取子组件的属性。
而子组件想要传值给父组件,需要通过回调的方式。在子组件中通过this.$emit(事件名称,想要传递的值)来声明想要传递的值和事件名称,然后在父组件的子组件标签上使用@事件名称=函数名称来监听对应的事件,并在methods中用对应函数名称的函数来接收,其参数data就是传递来的值。

父组件代码

<template>
  <div>
    父组件:<button @click="getValueFromChildren">获取子组件的值</button>
    <hr />
    <MyChildren ref="children" @onChildrenClick="getValueOnChildrenClick"></MyChildren>
  </div>
</template>

<script>
import MyChildren from './MyChildren.vue'
export default {
  name: 'MyParent',
  components: { MyChildren },
  data() {
    return {}
  },
  methods: {
    getValueFromChildren() {
      // 获取子组件的ref引用
      const children = this.$refs.children
      // 获取子组件的值
      console.log('输出子组件value=>', children.value)
      // 调用子组件的方法
      children.childrenLog()
    },
    getValueOnChildrenClick(value) {
      console.log('父组件回调,值来自于子组件按钮点击后', value)
    }
  }
}
</script>

<style></style>

子组件代码

<template>
  <div>子组件:我的value是{{ value }}</div>
  <button @click="sendValue">传递值给父组件</button>
</template>

<script>
export default {
  name: 'MyChildren',
  data() {
    return {
      value: '114514'
    }
  },
  methods: {
    childrenLog() {
      console.log('我是子组件的方法')
    },
    sendValue() {
      this.$emit('onChildrenClick', 1919810)
    }
  }
}
</script>

<style></style>

最终效果

vue父子组件传值

评论

  1. 114514
    6 年前
    2019-4-06 20:21:51

    你是岛民吗?

    • hafuhafu
      博主
      114514
      6 年前
      2019-4-06 21:13:57

      只有岛上才有岛民

      • ATM
        hafuhafu
        6 年前
        2019-4-06 21:51:09

        你是bog吗

        • hafuhafu
          博主
          ATM
          6 年前
          2019-4-06 23:12:21

          我是鸟卫乒

          • A哥不要啊
            hafuhafu
            6 年前
            2019-4-06 23:40:50

            菜鸡前端交流群(目前就2个岛民) 来商业互吹啊

          • hafuhafu
            博主
            A哥不要啊
            6 年前
            2019-4-10 21:37:57

            自闭儿童好慌啊

  2. 6 年前
    2019-4-07 12:52:52

    昨天想着注册这个域名来着,一查发现已经被你得手了。真是可恶!

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇