• vue 父子组件的方法调用


    $emit 子组件触发父组件的方法:

     1 <!-- 子组件 -->
     2 <template>
     3     <div id="child">
     4         <button @click="tryToParent">click</button>
     5     </div>
     6 </template>
     7 <script>
     8 export default {
     9     name: 'child',
    10     methods:{
    11         tryToParent(){
    12             // 通过$emit进行触发
    13             // 第一个参数为父组件监听的事件名,后续参数为父组件方法的参数
    14             this.$emit("toParent","我从子组件传来")
    15         }
    16     }
    17 }
    18 </script>
    19 
    20 <!-- 父组件 -->
    21 <template>
    22     <div id="parent">
    23         <!-- 监听child的toParent事件广播,用fromChild进行处理 -->
    24         <child @toParent="fromChild"></child>
    25     </div>
    26 </template>
    27 <script>
    28 import child from "./child.vue"
    29 export default {
    30     name: 'parent',
    31     components:{child},
    32     methods:{
    33         fromChild(msg){
    34             console.log(msg);  // 点击子组件的button,这里最终打印出“我从子组件传来”
    35         }
    36     }
    37 }
    38 </script>

    $refs 父组件获取子组件实例,进而调用子组件方法或者直接修改子组件属性:

     1 <!-- 子组件 -->
     2 <template>
     3     <div id="child">
     4         <div>{{message1}}</div>
     5         <div>{{message2}}</div>
     6     </div>
     7 </template>
     8 <script>
     9 export default {
    10     name: 'child',
    11     data(){
    12         return {
    13             message1:"",
    14             message2:""
    15         }
    16     },
    17     methods:{
    18         fromParent(msg){
    19             this.message1 = msg
    20         }
    21     }
    22 }
    23 </script>
    24 
    25 <!-- 父组件 -->
    26 <template>
    27     <div id="parent">
    28         <button @click="toChild">click</button>
    29         <child ref="child"></child>
    30     </div>
    31 </template>
    32 <script>
    33 import child from "./child.vue"
    34 export default {
    35     name: 'parent',
    36     components:{child},
    37     methods:{
    38         toChild(){
    39             /** this.$refs.child返回child组件实例 **/
    40 
    41             // 调用子组件的fromParent方法
    42             this.$refs.child.fromParent("我从父组件传递过来")
    43             // 直接修改child的data
    44             this.$refs.child.message2 = "啦啦啦"
    45         }
    46     }
    47 }
    48 </script>

      在复杂的vue应用中,应该用vuex的store来管理跨组件的数据交流,再根据数据的变化触发相应的方法。

  • 相关阅读:
    LeetCode(274)H-Index
    LeetCode(279)Perfect Squares
    LeetCode(278)First Bad Version
    LeetCode(289)Game of Life
    LeetCode(292) Nim Game
    LeetCode(282) Peeking Iterator
    解决Secure Shell Client(SSH)客户端中文乱码的方法
    Mysql 或者当前时间戳
    java http请求url报错505,但是浏览器可以正常返回json数据
    查询直播流实时帧率和码率 签名
  • 原文地址:https://www.cnblogs.com/yangshifu/p/9518528.html
Copyright © 2020-2023  润新知