星联网络专注帝国CMS二次功能插件开发-精品网站模板站长代码素材

  • 最近更新
  • 模板:33
  • 记录:12641|
  • 插件:52|
  • 工具:4|
  • 代码:8|
  • 评论:0

vue2.0嵌套组件之间的通信($refs,props,$emit)

前言

本文重点解决vue2.0嵌套组件之间的通信($efs,pops,$emi)问题,希望能够帮助到你

vue的一大特色就是组件化,所以组件之间的数据交互是非常重要,而我们经常使用组件之间的通信的方法有:props,$refs和emit。

初识组件之间的通信的属性和方法

props的使用

子组件使用父组件的数据,使用vue的属性props。

当我们在父组件parent里面嵌套一个子组件son的时候,如果我们需要使用父组件的数据的时候,我们可以在子组件标签上面绑定一个属性,然后在子组件里面通过props来调用这个属性,就可以使用这个数据了。

//父组件
 
<sonPart :list="listDate"></sonPart>
 
//子组件
 
<div>{{list}}</div>
export default{
  props:["list"] 
}

props的数据类型

1,数组:当我们简单使用数据的时候,这时候props可以是一个数组的类型

props: ['list1','list2'.....]

2,对象:当我们要设置所使用的数据的类型、默认值等的时候,props就可以是一个Object类型

props: {
  list1: {
    type: Number/String/Boolean/Array/Object,   //类型
    default: function (){return},   //默认值
    required: true/false     //是否必填
  }  
}

$refs

vue有一个$refs属性,当只是组件的内容的时候,可以通过这个属性获得DOM元素,对这个DOM进行操作;如果是这个组件的子组件的时候,可以通过这个属性获得这个子组件对象,就可以访问这个组件里面的data与methods里面的内容了。(这时候取得子组件的数据一般是静态的)

$refs的使用

在DOM标签或者组件标签的时候,添加一个ref属性,ref="name"。

添加这个属性后,就可以通过this.$refs.name获得这个DOM元素或者子组件

//父组件
 
<son ref="children"><son>
 
export default {
  mounted: {
   //这时候就可以获得了这个子组件
    let son = this.$refs.children
    }
}

$emit

当父组件获取的数据,需用通过子组件来动作(click、change等)改变后数据,这时候我们通过ref是获取不到的,获取的也是改变前的数据。

因为emit绑定的事件触发的时候,附加参数都会传给监听器回调。所以数据就会改变

//父组件
 
//template部分
<sonPart @getList="enter"></sonPart>
 
//js部分
import sonPart from './sonPar.vue';
export default{
 data () {
   radioData: ''
  },
  methods:{
    enter:function(value){
      this.radioData = value
    }
  },
   components: {sonPart} 
}
//子组件
 
<form @change="getData">
  <label><input type="radio" v-model="dataList" value="0" name="list1">one</label>
  <label><input type="radio" v-model="dataList" value="1" name="list1">two</label>
</form>
 
export default{
  data () {
    dataList:''
  },
  methods:{
    getData:function(){
      this.$emit("getList",this.dataList);
    }
  }  
}

$emit的参数

当我们使用的emit的时候,第一个参数为父组件使用方法名,后面一个参数为传递的数据。当数据有几个的时候,可以使用对象的形式传递参数。

methods: {
  getData: function() {
    this.$emit("getList",{name: this.dataList,value:"leo"[,....]}
  }
}

站在巨人的肩膀上摘苹果:

https://blog.csdn.net/weixin_33813128/article/details/94177294

https://www.jb51.net/article/140581.htm

本网刊登的文章均仅代表作者个人观点,并不代表本网立场。文中的论述和观点,敬请读者注意判断。

本文地址:http://www.xlkjgs.com/notes/js/2615.html

以上内容由本站整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

星联网络

星联网络是中国最具实战的互联网创业者的知识服务商,这里有互联网行业动态,网络推广,SEO优化,SEM优化,ESC配置,行业经验分型,互联网项目,微信营销、淘宝客赚钱、新媒体营销、京东运营、跨境电商等众多互联网营销知识分享

站长运营站长必备网站运营之道才能长久发展