当前位置:   article > 正文

如何使用vue定义组件之——子组件调用父组件数据

如何使用vue定义组件之——子组件调用父组件数据

1.定义父子模板template

  1. <div class="container">
  2. <my-father></my-father>
  3. <my-father></my-father>
  4. <my-father>
  5. </my-father>
  6. <!-- 此处无法调用子组件,子组件必须依赖于父组件进行展示 -->
  7. <!-- <my-children></my-children> -->
  8. </div>
  9. <template id="father">
  10. <div>
  11. <h3>我是父组件</h3>
  12. <h3>访问子组件的数据:</h3>
  13. <h3>{{ msg }}</h3>
  14. <h3>{{ name }}</h3>
  15. <h3>{{ age }}</h3>
  16. <h3>{{ user }}</h3>
  17. <my-children></my-children>
  18. <hr>
  19. </div>
  20. </template>
  21. <template id="children">
  22. <div>
  23. <h6>我是子组件</h6>
  24. <h6>访问子组件的数据:</h6>
  25. </div>
  26. </template>

2.创建Vue实例,如何建立父子关系

  1. <script>
  2. new Vue({
  3. el: '.container',
  4. components: {
  5. 'my-father': {//父组件
  6. template: '#father',
  7. data() {
  8. return {
  9. msg: "",
  10. name: "",
  11. age: null,
  12. user: {
  13. id: null,
  14. username: ""
  15. }
  16. }
  17. },
  18. components: {
  19. 'my-children': { //子组件,只能在 my-father中调该组件
  20. template: '#children',
  21. data() {
  22. return {
  23. msg: "welcome children!",
  24. name: "I'm a child!",
  25. age: 6,
  26. user: {
  27. id: 1001,
  28. username: 'admin'
  29. }
  30. }
  31. }
  32. }
  33. }
  34. }
  35. }
  36. })
  37. </script>

技术:事件监听+事件触发

父组件在调用子组件时,监听子组件触发的自定义事件,并在父组件中定义回调方法,用来接收数据
  1. <template id="father">
  2. <div>
  3. <h3>我是父组件</h3>
  4. <h3>访问子组件的数据:</h3>
  5. <h3>{{ msg }}</h3>
  6. <h3>{{ name }}</h3>
  7. <h3>{{ age }}</h3>
  8. <h3>{{ user }}</h3>
  9. <!-- 监听子组件触发的数据 -->
  10. <my-children @e-child="getMsg"></my-children>
  11. <hr>
  12. </div>
  13. </template>
在子组件中使用vm.$emit(事件名,数据)触发自定义事件,将当前获取的数据,传给父类
  1. components: {
  2. 'my-children': { //子组件,只能在 my-father中调该组件
  3. template: '#children',
  4. data() {
  5. return {
  6. msg: "welcome children!",
  7. name: "I'm a child!",
  8. age: 6,
  9. user: {
  10. id: 1001,
  11. username: 'admin'
  12. }
  13. }
  14. },
  15. created() {
  16. //触发事件,向父组件传递数据
  17. this.$emit('e-child', this.msg,this.name,this.age,this.user)
  18. }
  19. }
  20. }

父类定义一个方法,获取数据:

  1. new Vue({
  2. el: '.container',
  3. components: {
  4. 'my-father': {//父组件
  5. template: '#father',
  6. data() {
  7. return {
  8. msg: "",
  9. name: "",
  10. age: null,
  11. user: {
  12. id: null,
  13. username: ""
  14. }
  15. }
  16. },
  17. methods: {
  18. getMsg(msg,name,age,user) {
  19. this.msg = msg;
  20. this.name = name;
  21. this.age = age;
  22. this.user = user;
  23. }
  24. }
  25. }
  26. }
  27. })

打印结果:

相关文章:

如何使用vue定义组件之——全局or局部 

 如何使用vue定义组件之——父组件调用子组件数据

如何使用vue定义组件之——父组件调用子组件 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/266049
推荐阅读
相关标签
  

闽ICP备14008679号