VUE中有一個強(qiáng)大的UI框架Element,它廣泛使用在各類前端項(xiàng)目當(dāng)中。Element提供了大量的組件,如按鈕、輸入框、表格、日期選擇器等,并且還提供了最常用的樣式和組件封裝。雖然Element框架功能強(qiáng)大,但也有局限,其中循環(huán)功能有一些問題,本篇文章將詳細(xì)介紹該問題。
問題的具體情況是,在使用Vue框架的時候,我們經(jīng)常需要使用v-for指令來循環(huán)元素。而Element框架中的某些組件卻不能正常的循環(huán),尤其是對于Table組件,很多人可能會遇到循環(huán)問題。接下來本文將分別介紹Table組件和其他組件的循環(huán)問題。
對于El-Table組件的循環(huán)問題,原因在于其需要固定的列數(shù),如果我們使用v-for來渲染,就會出現(xiàn)列數(shù)不定的情況。因此,我們必須手動設(shè)置Table的固定列數(shù)。這里提供一個解決方案,我們可以先根據(jù)參數(shù)計(jì)算出第一列明細(xì)列的數(shù)量,然后再手動設(shè)置剩下的列數(shù)量。具體代碼實(shí)現(xiàn)如下:
<el-table-column v-for="(header, index) in headers" :key="header.propName" :prop="header.propName" :label="header.name" :fixed="index< detailColumnsLength" :sortable="header.sortable || false" :align="header.align || 'center'" :min-width="header.minWidth" :width="header.width" >
對于其他組件,比如El-Select等,問題在于其options屬性只能接受一個數(shù)組,而不能接受一個對象的數(shù)組。例如,我們可能需要把一組對象數(shù)組使用v-for循環(huán)出來并且將其用作Select組件的選項(xiàng)。但是,由于options屬性只能接受一個簡單數(shù)據(jù)類型的數(shù)組,我們就需要對數(shù)據(jù)進(jìn)行轉(zhuǎn)換。具體代碼實(shí)現(xiàn)如下:
<el-select v-model="currentData" placeholder="請選擇"><el-option v-for="(item, index) in optionList" :key="index" :label="item.label" :value="item.value" ></el-option></el-select> computed: { optionList(){ return this.dataList.map(item =>({ label: item.name, value: item.id, })); }, },
總之,使用Vue與Element框架的開發(fā)人員需要注意到這些循環(huán)問題。對于使用Table組件的情況,我們可以手動設(shè)置固定列數(shù),在其他組件的情況下,我們需要對數(shù)據(jù)進(jìn)行一些轉(zhuǎn)換操作。這樣才能保證程序正常運(yùn)行并且能夠完美的適應(yīng)各種數(shù)據(jù)格式。