效果图
el-select.vue(Select选择器)页面效果图
项目里el-select.vue代码
< script>
export default { name: 'el_select' ,data ( ) { return { options: [ { value: '选项1' ,label: '黄金糕' } , { value: '选项2' ,label: '双皮奶' ,disabled: true } , { value: '选项3' ,label: '蚵仔煎' } , { value: '选项4' ,label: '龙须面' } , { value: '选项5' ,label: '北京烤鸭' } ] ,value: '' ,value1: [ ] ,value2: [ ] ,cities: [ { value: 'Beijing' ,label: '北京' } , { value: 'Shanghai' ,label: '上海' } , { value: 'Nanjing' ,label: '南京' } , { value: 'Chengdu' ,label: '成都' } , { value: 'Shenzhen' ,label: '深圳' } , { value: 'Guangzhou' ,label: '广州' } ] ,value3: '' ,options2: [ { label: '热门城市' ,options: [ { value: 'Shanghai' ,label: '上海' } , { value: 'Beijing' ,label: '北京' } ] } , { label: '城市名' ,options: [ { value: 'Chengdu' ,label: '成都' } , { value: 'Shenzhen' ,label: '深圳' } , { value: 'Guangzhou' ,label: '广州' } , { value: 'Dalian' ,label: '大连' } ] } ] ,value4: '' ,options3: [ ] ,value5: [ ] ,list: [ ] ,loading: false,states: [ "Alabama" , "Alaska" , "Arizona" ,"Arkansas" , "California" , "Colorado" ,"Connecticut" , "Delaware" , "Florida" ,"Georgia" , "Hawaii" , "Idaho" , "Illinois" ,"Indiana" , "Iowa" , "Kansas" , "Kentucky" ,"Louisiana" , "Maine" , "Maryland" ,"Massachusetts" , "Michigan" , "Minnesota" ,"Mississippi" , "Missouri" , "Montana" ,"Nebraska" , "Nevada" , "New Hampshire" ,"New Jersey" , "New Mexico" , "New York" ,"North Carolina" , "North Dakota" , "Ohio" ,"Oklahoma" , "Oregon" , "Pennsylvania" ,"Rhode Island" , "South Carolina" ,"South Dakota" , "Tennessee" , "Texas" ,"Utah" , "Vermont" , "Virginia" ,"Washington" , "West Virginia" , "Wisconsin" ,"Wyoming" ] ,options4: [ { value: 'HTML' ,label: 'HTML' } , { value: 'CSS' ,label: 'CSS' } , { value: 'JavaScript' ,label: 'JavaScript' } ] ,value6: [ ] ,} } ,mounted ( ) { this.list = this.states.map( item = > { return { value: ` value:${ item} ` , label: ` label:${ item} ` } ; } ) ; } ,methods: { remoteMethod( query) { if ( query != = '' ) { this.loading = true ; setTimeout(( ) = > {this.loading = false; this.options3 = this.list.filter( item = > {return item.label.toLowerCase( ) .indexOf( query.toLowerCase( )) > -1; } ) ; } , 200 ) ; } else { this.options3 = [ ] ; } } } ,
} < /script> < template> < div class = "el_select_root" > < h2 > Select 选择器< /h2 >< h5 > 当选项过多时,使用下拉菜单展示并选择内容。< /h5 >< h3 > 一、基础用法< /h3 >< h5 > 适用广泛的基础单选< /h5 >< h5 > v-model的值为当前被选中的el-option的 value 属性值< /h5 >< el-select v-model= "value" placeholder = "请选择" > < el-optionv-for= "item in options" :key= "item.value" :label= "item.label" :value= "item.value" > < /el-option> < /el-select> < h3 > 二、有禁用选项< /h3 >< h5 > 在el-option中,设定disabled值为 true,即可禁用该选项< /h5 >< el-select v-model= "value" placeholder = "请选择" > < el-optionv-for= "item in options" :key= "item.value" :label= "item.label" :value= "item.value" :disabled= "item.disabled" > < /el-option> < /el-select> < h3 > 三、禁用状态< /h3 >< h5 > 选择器不可用状态< /h5 >< h5 > 为el-select设置disabled属性,则整个选择器不可用< /h5 >< el-select v-model= "value" disabled placeholder = "请选择" > < el-optionv-for= "item in options" :key= "item.value" :label= "item.label" :value= "item.value" > < /el-option> < /el-select> < h3 > 四、可清空单选< /h3 >< h5 > 包含清空按钮,可将选择器清空为初始状态< /h5 >< p> 为el-select设置clearable属性,则可将选择器清空。需要注意的是,clearable属性仅适用于单选。< /p> < el-select v-model= "value" clearable placeholder = "请选择" > < el-optionv-for= "item in options" :key= "item.value" :label= "item.label" :value= "item.value" > < /el-option> < /el-select> < h3 > 五、基础多选< /h3 >< h5 > 适用性较广的基础多选,用 Tag 展示已选项< /h5 >< p> 为el-select设置multiple属性即可启用多选,此时v-model的值为当前选中值所组成的数组。默认情况下选中值会以 Tag 的形式展现,你也可以设置collapse-tags属性将它们合并为一段文字。< /p> < el-select v-model= "value1" multiple placeholder = "请选择" > < el-optionv-for= "item in options" :key= "item.value" :label= "item.label" :value= "item.value" > < /el-option> < /el-select> < el-selectv-model= "value2" multiplecollapse-tagsstyle = "margin-left: 20px;" placeholder = "请选择" > < el-optionv-for= "item in options" :key= "item.value" :label= "item.label" :value= "item.value" > < /el-option> < /el-select> < h3 > 六、自定义模板< /h3 >< h5 > 可以自定义备选项< /h5 >< P> 将自定义的 HTML 模板插入el-option的 slot 中即可。< /P> < el-select v-model= "value3" placeholder = "请选择" > < el-optionv-for= "item in cities" :key= "item.value" :label= "item.label" :value= "item.value" > < span style = "float: left" > { { item.label } } < /span> < span style = "float: right; color: #8492a6; font-size: 13px; margin-left: 20px;" > { { item.value } } < /span> < /el-option> < /el-select> < h3 > 七、分组< /h3 >< h5 > 备选项进行分组展示< /h5 >< p> 使用el-option-group对备选项进行分组,它的label属性为分组名< /p> < el-select v-model= "value4" placeholder = "请选择" > < el-option-groupv-for= "group in options2" :key= "group.label" :label= "group.label" > < el-optionv-for= "item in group.options" :key= "item.value" :label= "item.label" :value= "item.value" > < /el-option> < /el-option-group> < /el-select> < h3 > 八、可搜索< /h3 >< h5 > 可以利用搜索功能快速查找选项< /h5 >< p> 为el-select添加filterable属性即可启用搜索功能。默认情况下,Select 会找出所有label属性包含输入值的选项。如果希望使用其他的搜索逻辑,可以通过传入一个filter-method来实现。filter-method为一个Function,它会在输入值发生变化时调用,参数为当前输入值。< /p> < el-select v-model= "value" filterable placeholder = "请选择" > < el-optionv-for= "item in options" :key= "item.value" :label= "item.label" :value= "item.value" > < /el-option> < /el-select> < h3 > 九、远程搜索< /h3 >< h5 > 从服务器搜索数据,输入关键字进行查找< /h5 >< p> 为了启用远程搜索,需要将filterable和remote设置为true,同时传入一个remote-method。remote-method为一个Function,它会在输入值发生变化时调用,参数为当前输入值。需要注意的是,如果el-option是通过v-for指令渲染出来的,此时需要为el-option添加key属性,且其值需具有唯一性,比如此例中的item.value。< /p> < el-selectv-model= "value5" multiplefilterableremotereserve-keywordplaceholder = "请输入关键词" :remote-method= "remoteMethod" :loading= "loading" > < el-optionv-for= "item in options3" :key= "item.value" :label= "item.label" :value= "item.value" > < /el-option> < /el-select> < h3 > 十、创建条目< /h3 >< h5 > 可以创建并选中选项中不存在的条目< /h5 >< p> 使用allow-create属性即可通过在输入框中输入文字来创建新的条目。注意此时filterable必须为真。本例还使用了default-first-option属性,在该属性打开的情况下,按下回车就可以选中当前选项列表中的第一个选项,无需使用鼠标或键盘方向键进行定位。< /p> < h5 > 如果 Select 的绑定值为对象类型,请务必指定 value-key 作为它的唯一性标识。< /h5 >< el-selectv-model= "value6" multiplefilterableallow-createdefault-first-optionplaceholder = "请选择文章标签" > < el-optionv-for= "item in options4" :key= "item.value" :label= "item.label" :value= "item.value" > < /el-option> < /el-select> < /div> < /template> < style>
.el_select_root { margin-left: 300px; margin-right: 300px; text-align: left;
}
< /style>
Select Attributes
Select Events
Select Slots
Option Group Attributes
Option Attributes
Methods