全局组件注册
Vue.component('first-component', { data: function () { return { count: 0 } }, template: '<button @click="count++">{{ count }}</button>' })
data 必须是一个函数
组件模板内容必须是单个根元素
组件模板内容可以是模板字符串
全局组件可以嵌套全局组件
组件命名方式
Vue.component('first-component', {/* .... */}) // 普通标签模板中不能使用驼峰, 只能在template中使用驼峰方式 Vue.component('firstComponent', {/* .... */})
局部组件注册
局部注册的组件只能在父组件中使用 ;
var vm = new Vue({ components: { 'hello-world': { data: function () { return { msg: 'hello world' } }, template: '<div>{{ msg }}</div>' } } })
props 传递数据原则 : 单向数据流
组件内部通过 props 接收传递过来的值
Vue.component('son-com', { props: ['msg', 'parentMsg'] template: '<div>{{msg + "---" + parentMsg}}</div>' })
父组件通过属性将值传递给子组件
<son-com msg="父组件的值" :parent-msg="bind绑定的父组件的值"></son-com>
props 属性名规则
- 在props中使用驼峰形式, 模板中需要使用短横线的形式 ; html 对大小写的不敏感的
- 字符串中没有这个限制
props 传递类型
<div id="app"> <son-com :str="pstr" :num="pnum" <!-- 注意如果不用 v-bind 则获取不到准确的属性值 --> :boolean="pboolean" :arr="parr" :obj="pobj" > </son-com> </div>
Vue.component('son-com', { props: ['str', 'num', 'boolean', 'arr', 'obj'], template: ` <div> <div>{{ str }}</div> <div>{{ num }}</div> <div>{{ boolean }}</div> <ul> <li :key="index" v-for="(item, index) in arr">{{ item }}</li> </ul> <div> <span>{{ obj.name }}</span> <span>{{ obj.age }}</span> </div> </div> ` })
var vm = new Vue({ el: '#app', data: { pstr: 'hello Vue', pnum: 12, pboolean: true, parr: ['apple', 'banner', 'orange'], pobj: {name: 'zs', age: 22} } })
子组件向父组件传值
子组件通过自定义事件向父组件传值 $emit()
Vue.component('son-com', { template: ` <div> <button @click="$emit('parent')">点击放大父组件字体</button> 传值从第二个参数开始 <button @click="$emit('parent', 10)">点击放大父组件字体</button> </div> ` })
父组件监听子组件事件
<div id="app"> <div>父组件</div> <son-com @parent="handle"></son-com> <!-- 接收值为固定 $event--> <son-com @parent="handle($event)"></son-com> </div>
var vm = new Vue({ el: '#app', data: { font: 10 }, methods: { handle: function (val) { this.font += 5 this.font += val // 此时的val就是 子组件传递过来的值 } }, })
非父子组件传值
单独的事件中心管理组件之间的通信
// 创建事件中心 var hub = new Vue() // 在 mounted 中监听事件 hub.$on('eventName', fn) hub.$off('eventName') // 销毁事件 // 在 methods 中处理事件 hub.$emit('eventName', param)
组件插槽
<tmp-com> <!-- 只能匹配一个标签 --> <p slot="header">程序错误</p> <div>我是没有匹配的内容</div> <!-- 可以匹配多个标签 --> <template slot="footer"> <p>匹配页脚一次</p> <p>匹配页脚两次</p> </template> </tmp-com>
Vue.component('tmp-com', { template: ` <div> <header> <slot name="header"></slot> </header> <div> 如果上面没有匹配到对应的标签就会展示默认内容 <slot></slot> </div> <footer> <slot name="footer"></slot> </footer> </div> ` })
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2024年11月12日
2024年11月12日
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]