本篇文章主要介紹了Vue header元件開發詳解,現在分享給大家,也給大家做個參考。
一、 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 // 传递的类型 } } }
小結:
#子元件在props中建立一個屬性,用以接收父元件傳過來的值
父元件中註冊子元件
在子元件標籤中新增子元件props中建立的屬性
將需要傳給子元件的值賦給該屬性
5. 呼叫資料
<p class="logo"> <img :src="sell.avatar" alt="" width='64' height='64'/> </p> <span class="name">{{sell.name}}</span> <p class="description"> {{sell.description + '/' + sell.deliveryTime + '分钟送达'}} </p>
細節問題:
support 綁定資料時加v-if ='sell.supports'
理由: 在我們透過axios取得資料前在父元件中建立了一個空的物件sellerObj 先傳給子元件,開始沒有資料傳送過去就會報錯underfined,加上v-if ,接受不到資料就不會解析,也就不會報錯。
二、header 元件彈出層(詳情)
#1.彈出遮罩層
(1) 設定一個狀態,判斷此狀態控制顯示隱藏
data (){ return { detailShow:false } }
<p v-if="detailShow" class="detail"></p>
(2) 綁定點擊事件,透過methods 方法改變狀態,控制顯隱效果
<p class="bulletin-wrapper" @click="showDetails()" ></p> <p class="detail-close" v-if="sell.supports"> <i class="icon-close" @click="hideDetail()"></i> </p>
methods:{ showDetails () { this.detailShow=true }, hideDetail () { this.detailShow=false } }
2. 星級評分
(1) 綁定class 控制星級大小的類型
// 利用 computed 属性 <p class="star" :class="starSizeType"></p>
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 加類別名稱
<p class="star" :class="starSizeType"> <span v-for="itemClass in itemClasses" :class="itemClass" class="star-item" track-by="$index"></span> </p>
上面是我整理給大家的,希望今後會對大家有幫助。
相關文章:
#以上是在Vue中透過header元件如何開發(詳細教學)的詳細內容。更多資訊請關注PHP中文網其他相關文章!