分享

Vue中的父子传值问题

 若生安饶 2020-09-22

1.父传子

Father.vue(用v-bind(简写 : )  将父组件传的值绑定到子组件上)

  1. <template>
  2. <div>
  3. 我是爸爸:{{message}}
  4. <hr>
  5. <Son :toSonData="toSonData"></Son>
  6. </div>
  7. </template>
  8. <script>
  9. import Son from "./Son.vue";
  10. export default {
  11. data() {
  12. return {
  13. message : "儿子你好",
  14. toSonData: "大嘴巴子"//给子组件的值
  15. };
  16. },
  17. components: {
  18. Son
  19. }
  20. };
  21. </script>
  22. <style lang='scss' scoped>
  23. </style>

Son.vue(在子组件中用props方法接收父组件传来的值,两种方法,具体用哪种看个人喜好,推荐第二种)

  1. <template>
  2. <div>
  3. 我是儿子:{{message}}
  4. <br>
  5. 爸爸给我的礼物:{{toSonData}}
  6. </div>
  7. </template>
  8. <script>
  9. export default {
  10. // props:["toSonData"],//第一种方式
  11. props:{//第二种方式
  12. toSonData:{
  13. type:String,
  14. default:function(){
  15. return ""
  16. }
  17. }
  18. },
  19. data () {
  20. return {
  21. message : "爸爸你好"
  22. };
  23. },
  24. }
  25. </script>
  26. <style lang='scss' scoped>
  27. </style>

效果图:

2.子传父

Son.vue(在子组件中创建一个按钮,定义一个点击事件,点击事件里用this.$emit方法触发一个自定义事件,并传递一个参数)

  1. <template>
  2. <div>
  3. 我是儿子:{{message}}
  4. <br>
  5. 爸爸给我的礼物:{{toSonData}}
  6. <br>
  7. <button @click="toFatherData">给爸爸传值</button>
  8. </div>
  9. </template>
  10. <script>
  11. export default {
  12. // props:["toSonData"],//第一种方式
  13. props:{//第二种方式
  14. toSonData:{
  15. type:String,
  16. default:function(){
  17. return ""
  18. }
  19. }
  20. },
  21. data () {
  22. return {
  23. message : "爸爸你好"
  24. };
  25. },
  26. methods:{
  27. toFatherData(){
  28. this.$emit("toFatherData","给爸爸的爱")
  29. }
  30. }
  31. }
  32. </script>
  33. <style lang='scss' scoped>
  34. </style>

Father.vue(在父组件中的子标签中监听该自定义事件并添加一个响应该事件的处理方法,将接收到的值赋给data中的sendSonMessage)

  1. <template>
  2. <div>
  3. 我是爸爸:{{message}}
  4. <br>
  5. 儿子传来的值:{{sendSonMessage}}
  6. <hr>
  7. <Son :toSonData="toSonData" @toFatherData="sendSonData"></Son>
  8. </div>
  9. </template>
  10. <script>
  11. import Son from "./Son.vue";
  12. export default {
  13. data() {
  14. return {
  15. message : "儿子你好",
  16. toSonData: "大嘴巴子",//给子组件的值
  17. sendSonMessage: ""
  18. };
  19. },
  20. components: {
  21. Son
  22. },
  23. methods:{
  24. sendSonData(data){
  25. this.sendSonMessage=data;
  26. }
  27. }
  28. };
  29. </script>
  30. <style lang='scss' scoped>
  31. </style>

效果图:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多