vue父子组件传参之ref

摘要:
在vue中,传递参数的常见方法是将参数从父组件传递到子组件以及从兄弟组件传递。

在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')) 
vue父子组件传参之ref第1张

很显然我们得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>

免责声明:文章转载自《vue父子组件传参之ref》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Debug 和 Release 编译方式的本质区别Systemd日志管理服务:Journald以及重要配置选项下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue中detele删除对象属性时视图不能响应更新

如下代码片段 // js obj = { a: 123, b: 223, c: 323 } // html <li v-for="item in obj">{{ item }}</li> 此时若在methods中使用 delete this.obj.a 或者 delete this.obj["a"]会发现视图中...

一步步带你做vue后台管理框架(一)——介绍框架

系列教程《一步步带你做vue后台管理框架》第一课 github地址:vue-framework-wz 线上体验地址:立即体验 《一步步带你做vue后台管理框架》第一课:介绍框架 《一步步带你做vue后台管理框架》第二课:上手使用 《一步步带你做vue后台管理框架》第三课:登录功能 Features 特性 ?wz脚手架?(脚手架助你安装/卸载组件更方便...

Vue 多环境配置方法

开发应用时环境有开发环境、测试环境、生产环境等,此时我们需要配置不同的环境,获取不同的apiUrl前缀,避免了频繁手动更改api. 1.安装cross-env插件 cross-env是跨平台设置和使用环境变量的脚本。在大多数Windows命令行中在使用NODE_ENV = production设置环境变量时会报错。同样,Windows和Linux命令如何...

vue之监听事件

<template> <div> <!-- tab分页 --> <div> <a-tabs default-active-key="test" @change="callback" type="card"> <a-tab-pane key="t...

学习vue之windows下安装live-server 超级详细篇

最近项目要求用vue2.0所以开始着手学习。 前期准备: 下载Node.js 地址:http://nodejs.cn/download/ 选择自己对应的版本,我下载的是.msi 64位的 然后就双击下一步吧。完成之后,记得配置环境变量(不知道环境变量在哪里的 先拉到最下面) 因为我把Node.js安装到了D盘nodeJs目录下。 呼出cmd,命令走起 ,...

Vue指令和事件

/** * 语法糖的概念: * 语法糖是指在不影响功能的情况下,添加某种方法实现同样的; * 使用语法糖,可以简化代码的书写 * 比如 v-on:click='func' @click='func' * v-bind:src :src */ <!-- v-on 可以监听原生DOM事件click,dbclick,keyup,mousemove...