關(guān)于ElementUI el-select 綁定對象的探索

為了簡單,直接引用ElementUI官網(wǎng)的例子,當(dāng)需要綁定一個(gè)對象的時(shí)候直接給el-option的value屬性設(shè)置為遍歷集合的一個(gè)對象如下:

<template>
<el-select v-model="value3" disabled placeholder="請選擇">
    <el-option
      v-for="item in options"
      :key="item.value"
      :label="item.label"
      :value="item">        <----------------此處 item 為一個(gè)對象--------------->
    </el-option>
  </el-select>
</template>
<script>
  export default {
    data() {
      return {
        options: [{
          value: '選項(xiàng)1',
          label: '黃金糕'
        }, {
          value: '選項(xiàng)2',
          label: '雙皮奶'
        }, {
          value: '選項(xiàng)3',
          label: '蚵仔煎'
        }, {
          value: '選項(xiàng)4',
          label: '龍須面'
        }, {
          value: '選項(xiàng)5',
          label: '北京烤鴨'
        }],
        value3: ''
      }
    }
  }
</script>

程序能夠正常執(zhí)行
然后更改options對象的數(shù)據(jù)結(jié)構(gòu)如下

options: [{
          name: '選項(xiàng)1',
          label: '黃金糕'
        }, {
          name: '選項(xiàng)2',
          label: '雙皮奶'
        }, {
          name: '選項(xiàng)3',
          label: '蚵仔煎'
        }, {
          name: '選項(xiàng)4',
          label: '龍須面'
        }, {
          name: '選項(xiàng)5',
          label: '北京烤鴨'
        }]

程序運(yùn)行后發(fā)現(xiàn)所有下拉值為藍(lán)色,也就是選中的狀態(tài)。如下:


image.png

然后查了一下官網(wǎng)中api中有提到value-key這個(gè)屬性,當(dāng)綁定對象類型時(shí)必填,如:


image.png

接下來改造我們的代碼,添加value-key為更改options集合對象后,對象所包含的name屬性,如:

<el-select v-model="value3" disabled placeholder="請選擇" value-key="name"><----------------指定value-key為數(shù)組對象中對象的name屬性--------------->
    <el-option
      v-for="item in options"
      :key="item.value"
      :label="item.label"
      :value="item">        <----------------此處 item 為一個(gè)對象--------------->
    </el-option>
  </el-select>

然后頁面中顯示出了正確結(jié)果,即只有一項(xiàng)選中態(tài),如:


image.png

到這里就讓我產(chǎn)生了困惑,為啥第一次沒有指定value-key卻也是正確的呢,于是,我打開了elemnt-ui的源碼,其中在select.vue文件中找到了value-key定義的地方


image.png

終于真相大白,原來value-key默認(rèn)值為value,所以在最上面options數(shù)據(jù)項(xiàng)結(jié)構(gòu)為labe、value時(shí)能夠正常顯示,但是如果換成name,label就無法正常獲得選中的值了。此時(shí)就需要去指定value-key為數(shù)據(jù)項(xiàng)結(jié)構(gòu)的name或label屬性(總之需要提供一個(gè)包含的屬性名)
至此,為自己做一個(gè)記錄,也為遇到相關(guān)問題的人提供一些幫助。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容