鍍金池/ 問(wèn)答/HTML5  HTML/ mint-ui cell 使用v-if改變icon報(bào)錯(cuò)

mint-ui cell 使用v-if改變icon報(bào)錯(cuò)

我想實(shí)現(xiàn)一個(gè)云盤(pán)列表,顯示文件夾、xls、pdf、png等文件類(lèi)型,在用v-for循環(huán)cell的時(shí)候,加v-if來(lái)判斷fileType,以此來(lái)進(jìn)一步改變slot里的icon。但是單獨(dú)在img里修改的時(shí)候會(huì)報(bào)錯(cuò),說(shuō)v-else-if必須放在使用了v-if的相鄰元素后才可以。不知道該怎么改,求指教orz。
此為頁(yè)面代碼

<mt-index-list>
        <mt-cell v-for="file in fileList" :key="file.fileId" 
                :title="file.fileName" 
                @click.native="change(file.fileName)"  
                label="描述文字">
            <img slot="icon" v-if="file.fileType ==='folder'" style="width:30px;height:30px" src="../../assets/folder.png"/><i class="iconfont icon-arrow-right-copy-copy"></i>
            <img slot="icon" v-else-if="file.fileType ==='xls'" style="width:30px;height:30px" src="../../assets/excel.png"/>
        </mt-cell>
<mt-index-list>

此為返回的數(shù)據(jù)

fileList:[{
        fileId:'1',
        fileSize:0,
        fileName:'1',
        fileType:'folder'
      },{
        fileId:'2',
        fileSize:0,
        fileName:'2',
        fileType:'doc'
      },{
        fileId:'3',
        fileSize:0,
        fileName:'3',
        fileType:'folder'
      },{
        fileId:'4',
        fileSize:0,
        fileName:'4',
        fileType:'folder'
      },{
        fileId:'5',
        fileSize:0,
        fileName:'5',
        fileType:'folder'
      }],

預(yù)期效果

clipboard.png

報(bào)錯(cuò)內(nèi)容

clipboard.png

也試過(guò)將v-if寫(xiě)在mt-cell標(biāo)簽里,但是這樣做了后顯示如圖

clipboard.png

還請(qǐng)大神們指點(diǎn)一下該怎么改一下才可以呢

回答
編輯回答
紓惘

用函數(shù)計(jì)算,將type傳遞過(guò)去,返回計(jì)算出來(lái)的icon


補(bǔ)充:

你的報(bào)錯(cuò)原因主要是這個(gè)地方

<img slot="icon" v-if="file.fileType ==='folder'" style="width:30px;height:30px" src="../../assets/folder.png"/>
<i class="iconfont icon-arrow-right-copy-copy"></i>
<img slot="icon" v-else-if="file.fileType ==='xls'" style="width:30px;height:30px" src="../../assets/excel.png"/>

這個(gè)i標(biāo)簽緊跟在v-ifimg標(biāo)簽的后面,使得v-if的模板解析的時(shí)候認(rèn)為已經(jīng)結(jié)束了,所以會(huì)提示你v-else-if必須緊跟在v-if后面。

你可以嘗試用

<template v-if="file.fileType ==='folder'">
<img slot="icon"  style="width:30px;height:30px" src="../../assets/folder.png"/>
<i class="iconfont icon-arrow-right-copy-copy"></i>
</template>

替代原來(lái)的那個(gè)v-if的部分。

我上面提的主要是通過(guò)其他的方法,比如你可以單獨(dú)用一個(gè)method計(jì)算出src和icon,然后只需要一個(gè)標(biāo)簽就可以表示出所有的圖片了。
當(dāng)然,用內(nèi)聯(lián)的代碼計(jì)算出的src比較麻煩,可能需要先import對(duì)應(yīng)的圖片,或者計(jì)算出class,圖片用background-image來(lái)引入就行了

2017年2月27日 05:12