Vue 父子组件传值

淡淡的烟草味﹌ 2023-07-21 08:40 105阅读 0赞

新建子组件

新建一个模板对象com1,然后在vm中的components里注册一下,就可以使用com1标签了,标签内容就是子元素的内容。

  1. //子组件
  2. var com1 = {
  3. template: '#tmp1'
  4. }
  5. //父组件
  6. var vm = new Vue({
  7. el: '#app',
  8. components: {
  9. com1
  10. }
  11. })

在父元素中使用com1标签,就可以显示子元素的内容了

  1. //父元素
  2. <div id="app">
  3. <com1></com1>
  4. </div>
  5. //子元素
  6. <template id="tmp1">
  7. <div>
  8. <h2>我是子元素</h2>
  9. </div>
  10. </template>

在这里插入图片描述

父组件向子组件传值

用属性传值: 用v-bind定义一个名字获取父组件的msg

  1. <div id="app">
  2. <com1 :parentmsg="msg" ></com1>
  3. </div>

然后子组件通过props定义一下parentmsg,然后把parentmsg放在子元素就能显示了

  1. <template id="tmp1">
  2. <div>
  3. <h2>我是子元素 --- { { parentmsg }}</h2>
  4. </div>
  5. </template>
  6. <script>
  7. var com1 = { // 子组件
  8. template: '#tmp1',
  9. props:['parentmsg'] //用props定义一下v-bind绑定的parentmsg,子元素就可以使用了
  10. }
  11. var vm = new Vue({ // 父组件
  12. el: '#app',
  13. data: {
  14. msg: '这是父组件的数据'
  15. },
  16. components: {
  17. com1
  18. }
  19. })
  20. </script>

子组件向父组件传值

在父元素定义一个方法,当子组件调用这个方法的时候,就会传过来一个参数(data),这个参数就是子组件的数据。获取数据放到data里输出就好了。

子元素点击sentdMsg(),通过$emit()方法调用func函数,并把子元素的msg传到参数data中

  1. //父元素
  2. <div id="app">
  3. <com1 :parentmsg="msg" @func="getMsgFormSon"></com1>
  4. </div>
  5. //子元素
  6. <template id="tmp1">
  7. <div>
  8. <h2>我是子元素 --- { { parentmsg }} </h2>
  9. <input type="button" value="向父组件传递的内容" @click="sendMsg">
  10. </div>
  11. </template>
  12. <script>
  13. var com1 = { // 子组件
  14. template: '#tmp1',
  15. data() {
  16. return {
  17. msg: 'i am 子组件'
  18. }
  19. },
  20. props: ['parentmsg'], //用props定义一下v-bind绑定的parentmsg,子元素就可以使用了
  21. methods: {
  22. sendMsg() { //点击函数触发事件
  23. this.$emit('func', this.msg) //使用$emit方法调用func函数并吧msg带过去
  24. }
  25. }
  26. }
  27. var vm = new Vue({ // 父组件
  28. el: '#app',
  29. data: {
  30. msg: '这是父组件的数据',
  31. msgFormSon: '' //用来存放子元素数据
  32. },
  33. methods: {
  34. getMsgFormSon(data) { //当子元素调用这个方法的时候执行,并带过来data参数(也就是子元素的值)
  35. this.msgFormSon = data //获取到子元素的值保存到data里
  36. console.log(this.msgFormSon)
  37. }
  38. },
  39. components: {
  40. com1
  41. }
  42. })
  43. </script>

发表评论

表情:
评论列表 (有 0 条评论,105人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Vue父子组件

    Vue父子组件传值:有四种方式:props,ref,emit 和模板传递通信slot 通过props来传值: 静态传值就是直接通过props来传递 动态传值是通