国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 幫助中心 > 正文

element-ui 遠程搜索組件el-select在項目中組件化的實現代碼

2024-07-09 22:42:11
字體:
來源:轉載
供稿:網友

在項目中發現使用el-select時寫的比較多重復代碼,還有就是同一個頁面使用el-select會出現label值會顯示value值,
el-select組件化:

<template> <el-select  :class="obj&&keyword[keywordAttr.label]? 'selected': ''"  :value="keyword"  :placeholder="obj && keyword[keywordAttr.label]? keyword[keywordAttr.label]: placeholder"  filterable  :clearable="clear"  remote  :multiple="multiple"  :loading="selectLoading"  :reserve-keyword="reserve"  :remote-method="remoteMethod"  :  :disabled="disabled"  :value-key="keywordAttr.id"  @change="changeSelect"  @clear="handleClear"  @blur="handleBlur"  @focus="handleFocus"  @visible-change="handlerVisible" >  <el-option   v-for="item in keywordOptions"   :key="item[keywordAttr.id]"   :label="item[keywordAttr.label]"   :value="obj? item: item[keywordAttr.value]"   :disabled="item.disabled"  >   <slot :item="item"/>  </el-option> </el-select></template><script>export default { name: 'SelectRemote', props: {  value: {   type: [String, Object],   default: ''  },  reserve: {   type: Boolean,   default: true  },  clear: {   type: Boolean,   default: false  },  disabled: {   type: Boolean,   default: false  },  multiple: {   type: Boolean,   default: false  },  selectLoading: {   type: Boolean,   default: false  },  width: {   type: String,   default: '100%'  },  keywordOptions: {   type: Array,   default: function() {    return []   }  },  keywordAttr: {   type: Object,   required: true,   default: function() {    return {     id: '',     label: '',     value: ''    }   }  },  obj: {   type: Boolean,   default: false  },  placeholder: {   type: String,   default: function() { return '請輸入關鍵詞' }  } }, data() {  return {   keyword: this.value  } }, watch: {  value(newVal) {   this.keyword = newVal  } }, methods: {  remoteMethod(query) {   this.$emit('remoteMethod', query)  },  changeSelect(item) {   this.$emit('changeSelect', item)  },  handleClear() {   this.$emit('clear')  },  handleBlur() {   this.$emit('blur')  },  handleFocus() {   this.$emit('focus')  },  handlerVisible() {   this.$emit('visible-change')  } }}</script><style lang="scss" scoped>.selected ::-webkit-input-placeholder{ color: #606266 !important;}</style>

主要是使用了placeholder來顯示;

在父組件中:

<SeletcRemote       v-model="nodeOperate.saleEmp"       :keyword-attr="nodeObjPerson"       :keyword-options="empOptions"       :clear="true"       :obj="true"       :select-loading="selectLoading"       @remoteMethod="remoteMethod"       @changeSelect="handleProductChange($event, nodeOperate, 'saleEmp')"      />
nodeObjPerson: {  id: 'id',  label: 'empName'  }
handleProductChange(val, row, field) {   this.$set(row, field, val)  }

可以在單選的的狀態下完美解決了label顯示值;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陈巴尔虎旗| 丹江口市| 石嘴山市| 山阳县| 浦城县| 杭州市| 垣曲县| 西充县| 康保县| 沁水县| 海伦市| 正蓝旗| 崇文区| 偏关县| 三穗县| 通化县| 肃南| 阳山县| 新干县| 呼图壁县| 新安县| 朝阳县| 绥芬河市| 武宁县| 芜湖县| 孝感市| 双江| 庆城县| 镇平县| 新晃| 玛曲县| 开江县| 成安县| 拉萨市| 博爱县| 呼图壁县| 诏安县| 昌江| 沅江市| 怀集县| 岳池县|