import header from './components/header/header'
export default { components:{ v-header:header } }
<v-header :sell="sellerObj"></v-header>
export default { props:{ // 子組件獲取 父組件 數據 sell:{ type:Object // 傳遞的類型 } } }
子組件在props中建立一個屬性,用以接收父組件傳過來的值vue
父組件中註冊子組件ios
在子組件標籤中添加子組件props中建立的屬性axios
把須要傳給子組件的值賦給該屬性數組
<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>
細節問題:app
data (){ return { detailShow:false } }
<div v-if="detailShow" class="detail"></div>
<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 } }
// 利用 computed 屬性 <div class="star" :class="starSizeType"></div>
computed: { starSizeType() { // 返回 星級的大小類型 48/36/24 return 'star-' + this.size; } }
<span v-for="itemClass in itemClasses" :class="itemClass" class="star-item" track-by="$index"></span>
// 類名用變量存起來 const LENGTH = 5 // 星星長度 const CLS_ON = 'on' // 全星 const CLS_HALF = 'half' // 半星 const CLS_OFF = 'off'// 空星
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; } }
<div class="star" :class="starSizeType"> <span v-for="itemClass in itemClasses" :class="itemClass" class="star-item" track-by="$index"></span> </div>