• vue父子组件传参之ref


    在vue中,传参的常用的就父子组件传参,兄弟组件传参。今天我们说的是父子组件传参中的一种方式$ref和ref

    首先我们创建一个子组件 并给他添加一个number的值和绑定一个点击事件@click='add()',每次点击加1

      Vue.component('counter', {
                template: `<div @click='add'>{{number}}</div>`,
                data() {
                    return {
                        number: 0
                    }
                },
           methods: {
            add() {
              this.number++
            }
           },
            })

      并在我们父组件中调用它

    <div id='app'>
       <div>
         <counter></counter>
         <counter></counter>
         <div>{{total}}</div>
       </div>
    </div>


    并且在子组件中使用change方法暴露出去

    this.$emit('change')

     当子组件发生改变的时候像外暴露,我们可以打印出来看看

    console.log(this.$emit('change')) 

    很显然我们得change方法是起作用了的     

    <counter ref="one" @change='hand'></counter>
    <counter ref="two" @change='hand'></counter>
    
    我们再通过ref 传入两个参数,并且添加change事件
    
    在父组件中写入
      var app = new Vue({
        el: '#app',
        data:{
          total:0
        },
        methods:{
          hand(){
            this.total = this.$refs.one.number+ this.$refs.two.number
          }
        }
      })

    这样我们就完成了父组件的传值

    完整代码如下

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <script src='vue.js'></script>
    </head>
    <body>
        <div id='app'>
            <counter ref='one' @change='hand'></counter>
            <counter ref='two' @change='hand'></counter>
            <div>{{total}}</div>
        </div>
    
        <script>
            Vue.component('counter',{
                template:`<div @click='add'>{{number}}</div>`,
                data() {
                    return {
                        number:0
                    }
                },
                methods: {
                    add() {
                        this.number++
                        this.$emit('change')
                        console.log(this.$emit('change'))
                    }
                },
            })
            var app = new Vue({
                el:'#app',
                data:{
                    total:0
                },
                methods:{
                    hand () {
                        this.total = this.$refs.one.number+this.$refs.two.number
                    }
                }
    
            })
        </script>
    </body>
    </html>
  • 相关阅读:
    2019年北航OO第三次博客总结
    2019年北航OO第二次博客总结
    2019年北航OO第一次博客总结
    BUAA_OO第四单元总结性博客作业——UML(Floyd实现规则检查?)
    BUAA_OO第三单元总结性博客作业——JML
    BUAA_OO第二单元总结性博客作业——多线程电梯架构
    BUAA_OO第一单元总结性博客作业——表达式求导
    免费虚拟主机 免费云服务器
    .net core API 使用swagger
    Socket学习
  • 原文地址:https://www.cnblogs.com/yang656/p/10184335.html
Copyright © 2020-2023  润新知