这篇文章主要为大家详细介绍了Vue header组件开发分析,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!
1. App.vue 引入组件
代码如下:
import header from './components/header/header'
2. App.vue 中注册组件
代码如下:
export default {
components:{
v-header:header
}
}
3. 使用组件
代码如下:
<v-header :sell="sellerObj"></v-header>
解释::sell="sellerObj",这里就像一个函数传参一样把sell当成形参,sellerObj就是实参,那么父组件实参是怎么传给子组件的,通过什么传
4. 父组件向子组件传递数据
在父组件中需要将sellerObj作为数据导出,子组件通过props从父组件中获得数据,且要指定数据类型
代码如下:
export default {
props:{ // 子组件获取 父组件 数据
sell:{
type:Object // 传递的类型
}
}
}
小结:
5. 调用数据
代码如下:
<div class="logo">
<img :src="sell.avatar" alt="" width='64' height='64'/>
</div>
<span class="name">{{sell.name}}</span>
<div class="description">
{{sell.description + '/' + sell.deliveryTime + '分钟送达'}}
</div>
细节问题:
support 绑定数据时 加 v-if ='sell.supports'
理由 : 在我们通过axios获取数据前在父组件中创建了一个空的对象sellerObj 先传给子组件,开始 没有数据传送过去就会报错 underfined,加上 v-if ,接受不到数据就不会解析,也就不会报错。
(1) 设置一个状态,判断该状态控制显示隐藏
代码如下:
data (){
return {
detailShow:false
}
}
代码如下:
<div v-if="detailShow" class="detail"></div>
(2) 绑定点击事件,通过methods 方法改变 状态,控制显隐效果
代码如下:
<div class="bulletin-wrapper" @click="showDetails()" ></div>
<div class="detail-close" v-if="sell.supports">
<i class="icon-close" @click="hideDetail()"></i>
</div>
代码如下:
methods:{
showDetails () {
this.detailShow=true
},
hideDetail () {
this.detailShow=false
}
}
(1) 绑定class 控制星级大小的类型
代码如下:
// 利用 computed 属性
<div class="star" :class="starSizeType"></div>
代码如下:
computed: {
starSizeType() { // 返回 星级的大小类型 48/36/24
return 'star-' + this.size;
}
}
(2) 遍历星星的数量
代码如下:
(3) 定义常量 控制 每个星的状态
代码如下:
// 类名用变量存起来
const LENGTH = 5 // 星星长度
const CLS_ON = 'on' // 全星
const CLS_HALF = 'half' // 半星
const CLS_OFF = 'off'// 空星
(4) 通过计算 判断每个span 的类型
代码如下:
itemClasses () { // 返回一个数组为每个span 的类名 (遍历)
let spanClassList=[];
// 利用 实参评分来判断 有几颗全星,半星,空星
let scores=( Math.floor(this.score * 2) ) / 2
let intNum= Math.floor(scores); // 全星个数
let HashalfNum= scores % 1 !== 0 // 半星
for(var i=0;i<intNum;i++){ // 遍历全星的span
spanClassList.push(CLS_ON)
}
if(HashalfNum){ // 如果有半星 加类名
spanClassList.push(CLS_HALF)
}
while(spanClassList.length<LENGTH){// 判断 是否有空星 及个数
spanClassList.push(CLS_OFF)
}
return spanClassList;
}
}
(5) 通过 动态绑定class 来 给span 加类名
代码如下:
<div class="star" :class="starSizeType">
<span v-for="itemClass in itemClasses" :class="itemClass" class="star-item" track-by="$index"></span>
</div>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持四海网。
本文来自:http://www.q1010.com/184/4749-0.html
注:关于Vue header组件开发分析的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。
关键词:vue.js
四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。