首頁 > web前端 > js教程 > 主體

Vue header元件開發實例程式碼

小云云
發布: 2018-01-31 10:05:12
原創
1714 人瀏覽過

本文主要和大家介紹Vue header組件開發詳解,給大家做個參考,希望大家對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 // 传递的类型 
 }
 }
 }
登入後複製

小結:

  1. 子元件在props中建立一個屬性,用以接收父元件傳過來的值

  2. 父元件中註冊子元件

  3. 在子元件標籤中新增子元件props中建立的屬性

  4. 把需要傳給子元件的值賦給該屬性

5. 呼叫資料


#

<p class="logo">
 <img :src="sell.avatar" alt="" width=&#39;64&#39; height=&#39;64&#39;/>
</p>
<span class="name">{{sell.name}}</span>
<p class="description">
  {{sell.description + &#39;/&#39; + sell.deliveryTime + &#39;分钟送达&#39;}}
</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 &#39;star-&#39; + this.size;
 }
}
登入後複製

(2) 遍歷星星的數量

複製程式碼 程式碼如下:



(3) 定義常數控制每個星的狀態


// 类名用变量存起来
const LENGTH = 5 // 星星长度
const CLS_ON = &#39;on&#39; // 全星
const CLS_HALF = &#39;half&#39; // 半星
const CLS_OFF = &#39;off&#39;// 空星
登入後複製

(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>
登入後複製
相關推薦:


jQuery在header中設定請求資訊實例詳解

php透過header傳送自訂資料詳解

#php的header的用法總結#

以上是Vue header元件開發實例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!