## 创建组件的3种方法
# 第一种:
+ Vue.extend()函数返回一个组件的构造器,里面包含一个参数,参数是对象,对象里面是一些配置项
+ Vue.component()函数利用Vue.extend()返回的构造器创建一个组件的实例,有两个参数.;
参数1:组件名字,参数2:组件构造器
注意:
模板template中只能有一个根节点
组建的名字采用驼峰命名的话,使用时,就要加上"-"; 例如:组件名字indexA-->index-a;
## 第二种:
+ Vue.component('indexB',{模板})
## 第三种:
+ 通过制定模板创建,在Vue管辖范围之外定义模板
## 总结:
+ 先制造一个模板,在创建组件
## 组件中使用指令:
+ 在Vue.component()里边,有template模板,有data()函数,有methods()方法
+ 注意:data()必须是一个个函数.不能使用属性定义;函数里边return出去一个对象
## 父组件传值给子组件的方法
* 先创建好父组件和子组件
* 在父组件的模板中的son,子组件标签里绑定 :属性 = 父组件需要传递的数据;
* 在子组件的son{}中 使用props来接收父组件传递过来的数据;
* props后跟一个数组,数组中是一个个字符串,这些字符串可以当成属性使用,即props:['属性名']
* 代码如下:
*
Vue.component('father',{ template:'<div>....<son :myName="mySonName"></son></div>', data(){ return{ mySonName:'小明' } }, //子组件 components:{ son:{ props:['myName'], template:'...{{myName}}' } } })
## 子组件传值给父组件的方法
* 先创建好父组件和子组件;
* 在子组件methods方法中使用this.$emit()方法,
* 这个方法有两个参数;参数1:需要与父组件交换事件名称,参数2:要传递的数据;
* 在父组件模板的son标签中使用方法名的传递:
即,@tellFatherMyname = "getMySonName";
* 在父组件的methods方法中传入data参数,这个data=子组件传递过来的数据,然后让mySonName = data;*
代码如下:
<div id="app"> <father></father> </div> <script> Vue.component('father',{ template:`<div> <p>我的儿子告诉我他叫{{mySonName}}</p> <son @tellFatherMyname="getMySonName"></son> </div>`, data(){ return { mySonName:'"emitMyname">点击就告诉父亲我叫{{myName}} </button>`, //在子组件的methods中使用this.$emit()来传递值; //$emit()有2个参数;参数1:需要交换的事件名,参数2:要传递的数据;例 如:this.name methods:{ emitMyname(){ this.$emit('tellFatherMyname',this.myName) } } } } }) var vm = new Vue({ el:'#app', data:{ } }) </script>
### 兄弟组件的创建和传值:
* 创建兄弟组建时,先创建好父组件,然后在子组件中创建son组件 和 daughter组件;
* 接下来是 son组件 和daughter组件之间传值;
* dau --> son传值
* 在dau中 先通过事件总线发射一个事件名称和要传递的数据;即eventbus.$emit('事件名称','数据')
* 事件总线:
var eventbus = new Vue();
* 在 son 中先写一个钩子函数,再通过eventbus.$on('事件名称',data=>{})方法去监听,接收兄弟节点发射过来的事件
* $on()有两个参数,参数1:事件名称;参数2:函数,函数的默认值是传递过来的数据* 代码如下:
*
<div id="app"> <!-- 在此处渲染到页面上 --> <father></father> </div> <script> //先创建一个vue空实例,作为事件总线 var eventbus = new Vue(); Vue.component('father',{ //组件显示的模板 template:`<div> <son></son> <daughter></daughter> </div>`, components: { son:{ data(){ return { mySisterName:'"emitMyName">点击就告诉哥哥我叫{{myName}}</button>', methods:{ //只要点击按钮,就将事件和数据一起传递过去 emitMyName(){ eventbus.$emit('tellBroMyName',this.myName) } } } } }) var vm = new Vue({ el:'#app', data:{ } }) </script>
总结
以上所述是小编给大家介绍的Vue组件创建和传值的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 第五街的士高《印度激情版》3CD [WAV+CUE][2.4G]
- 三国志8重制版哪个武将智力高 三国志8重制版智力武将排行一览
- 三国志8重制版哪个武将好 三国志8重制版武将排行一览
- 三国志8重制版武将图像怎么保存 三国志8重制版武将图像设置方法
- 何方.1990-我不是那种人【林杰唱片】【WAV+CUE】
- 张惠妹.1999-妹力新世纪2CD【丰华】【WAV+CUE】
- 邓丽欣.2006-FANTASY【金牌大风】【WAV+CUE】
- 饭制《黑神话》蜘蛛四妹手办
- 《燕云十六声》回应跑路:年内公测版本完成95%
- 网友发现国内版《双城之战》第二季有删减:亲亲环节没了!
- 邓丽君2024-《漫步人生路》头版限量编号MQA-UHQCD[WAV+CUE]
- SergeProkofievplaysProkofiev[Dutton][FLAC+CUE]
- 永恒英文金曲精选4《TheBestOfEverlastingFavouritesVol.4》[WAV+CUE]
- 群星《国风超有戏 第9期》[320K/MP3][13.63MB]
- 群星《国风超有戏 第9期》[FLAC/分轨][72.56MB]