elementUI的el-select 默認值顯示value不顯示label問題

我們再真實的項目中,當我們通過el-select選擇一個下拉選項時,除非是我們從新做了一次新的選擇,不管什么情況都會顯示我們選中的選項。可顯示情況是當我們刷新頁面、或者跳轉到其他頁面后又重新返回,我們之前的所選 的選項就被清空了。為了避免這個情況我們可以再選擇的時候綁定一個change事件,每選擇一次的時候就會返回一個我們所選擇的value值,而我們只需要把這個返回的value通過sessionStorage保存在本地,拿的時候在從sessionStorage中取,如下:

<el-select v-model="value" placeholder="請選擇" size="small" @change="sendSelectCompanyId">
      <el-option v-for="item in allCompanyname" :key="item.coid" :label="item.companyname" :value="item.coid"></el-option>
 </el-select>

<script>

export default {
  data() {
    return {
      value:sessionStorage.getItem("selectCompanyId") ||'',
   }
  },
  methods:{
    sendSelectCompanyId(value){
      //保存我們所選的value
      sessionStorage.setItem('selectCompanyId',value)
    },
  }
}
</script>

從邏輯上講,這完全是沒問題的,可現實是,當我們刷新的時候看到的竟是我們返回的value值而不是對應的label值,這是什么回事呢?原來是我們從后端那到coid是數字類型,我們把這個coid賦值給了組件的value,正常情況是這個是沒問題的,但是,當我們通sessionStorage保存和讀取的時候,我們拿到coid的類型就該變了,由原來的數字類型變為字符串類型,所以當我們刷新頁面看到的只是數字,而不是我們需要的label

那如何解決這個問題呢?
知道了原因解決起來也很簡單,只要把我們從本地拿到的字符串轉換為數字就可以了,如:

data() {
    return {
      value:Number(sessionStorage.getItem("selectCompanyId") ) || ' ',
   }
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容