2016-07-27 06:15:02 +00:00
|
|
|
|
<script>
|
|
|
|
|
export default {
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
2016-08-20 07:00:01 +00:00
|
|
|
|
list: null,
|
2016-07-27 06:15:02 +00:00
|
|
|
|
options: [{
|
|
|
|
|
value: '选项1',
|
2016-08-15 08:10:12 +00:00
|
|
|
|
label: '黄金糕'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项2',
|
2016-08-15 08:10:12 +00:00
|
|
|
|
label: '双皮奶'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项3',
|
2016-08-15 08:10:12 +00:00
|
|
|
|
label: '蚵仔煎'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项4',
|
2016-08-15 08:10:12 +00:00
|
|
|
|
label: '龙须面'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项5',
|
2016-08-15 08:10:12 +00:00
|
|
|
|
label: '北京烤鸭'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}],
|
|
|
|
|
options2: [{
|
|
|
|
|
value: '选项1',
|
2016-08-15 08:10:12 +00:00
|
|
|
|
label: '黄金糕'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项2',
|
2016-08-15 08:10:12 +00:00
|
|
|
|
label: '双皮奶',
|
2016-07-27 06:15:02 +00:00
|
|
|
|
disabled: true
|
|
|
|
|
}, {
|
|
|
|
|
value: '选项3',
|
2016-08-15 08:10:12 +00:00
|
|
|
|
label: '蚵仔煎'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项4',
|
2016-08-15 08:10:12 +00:00
|
|
|
|
label: '龙须面'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项5',
|
2016-08-15 08:10:12 +00:00
|
|
|
|
label: '北京烤鸭'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}],
|
|
|
|
|
options3: [{
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '热门城市',
|
2016-07-27 06:15:02 +00:00
|
|
|
|
options: [{
|
2016-08-22 06:07:53 +00:00
|
|
|
|
value: 'Shanghai',
|
|
|
|
|
label: '上海'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
2016-08-22 06:07:53 +00:00
|
|
|
|
value: 'Beijing',
|
|
|
|
|
label: '北京'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}]
|
|
|
|
|
}, {
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '城市名',
|
2016-07-27 06:15:02 +00:00
|
|
|
|
options: [{
|
2016-08-22 06:07:53 +00:00
|
|
|
|
value: 'Chengdu',
|
|
|
|
|
label: '成都'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
2016-08-22 06:07:53 +00:00
|
|
|
|
value: 'Shenzhen',
|
|
|
|
|
label: '深圳'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
2016-08-22 06:07:53 +00:00
|
|
|
|
value: 'Guangzhou',
|
|
|
|
|
label: '广州'
|
|
|
|
|
}, {
|
|
|
|
|
value: 'Dalian',
|
|
|
|
|
label: '大连'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}]
|
|
|
|
|
}],
|
2016-08-22 06:07:53 +00:00
|
|
|
|
options4: [],
|
2016-08-15 08:10:12 +00:00
|
|
|
|
cities: [{
|
|
|
|
|
value: 'Beijing',
|
|
|
|
|
label: '北京'
|
|
|
|
|
}, {
|
|
|
|
|
value: 'Shanghai',
|
|
|
|
|
label: '上海'
|
|
|
|
|
}, {
|
|
|
|
|
value: 'Nanjing',
|
|
|
|
|
label: '南京'
|
|
|
|
|
}, {
|
|
|
|
|
value: 'Chengdu',
|
|
|
|
|
label: '成都'
|
|
|
|
|
}, {
|
|
|
|
|
value: 'Shenzhen',
|
|
|
|
|
label: '深圳'
|
|
|
|
|
}, {
|
|
|
|
|
value: 'Guangzhou',
|
|
|
|
|
label: '广州'
|
|
|
|
|
}],
|
2016-07-27 06:15:02 +00:00
|
|
|
|
value: '',
|
|
|
|
|
value2: '',
|
|
|
|
|
value3: '',
|
|
|
|
|
value4: '',
|
2016-08-26 11:46:45 +00:00
|
|
|
|
value5: [],
|
2016-07-27 06:15:02 +00:00
|
|
|
|
value6: '',
|
|
|
|
|
value7: [],
|
2016-08-26 11:46:45 +00:00
|
|
|
|
value8: '',
|
|
|
|
|
value9: [],
|
2016-07-27 06:15:02 +00:00
|
|
|
|
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"]
|
|
|
|
|
};
|
|
|
|
|
},
|
2016-08-20 07:00:01 +00:00
|
|
|
|
|
|
|
|
|
mounted() {
|
|
|
|
|
this.list = this.states.map(item => { return { value: item, label: item }; });
|
|
|
|
|
},
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
|
|
|
|
methods: {
|
|
|
|
|
remoteMethod(query) {
|
|
|
|
|
if (query !== '') {
|
|
|
|
|
this.loading = true;
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
this.loading = false;
|
2016-08-22 06:07:53 +00:00
|
|
|
|
this.options4 = this.list.filter(item => item.label.toLowerCase().indexOf(query.toLowerCase()) > -1);
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, 200);
|
2016-08-20 07:00:01 +00:00
|
|
|
|
} else {
|
2016-08-22 06:07:53 +00:00
|
|
|
|
this.options4 = [];
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
## Select 选择器
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
当选项过多时,使用下拉菜单展示并选择内容。
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
### 基础用法
|
|
|
|
|
|
|
|
|
|
适用广泛的基础单选
|
|
|
|
|
|
|
|
|
|
:::demo `v-model`的值为当前被选中的`el-option`的 value 属性值
|
2016-07-27 06:15:02 +00:00
|
|
|
|
```html
|
|
|
|
|
<template>
|
2016-08-26 11:46:45 +00:00
|
|
|
|
<el-select v-model="value">
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="item in options"
|
|
|
|
|
:label="item.label"
|
|
|
|
|
:value="item.value">
|
|
|
|
|
</el-option>
|
|
|
|
|
</el-select>
|
2016-07-27 06:15:02 +00:00
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
export default {
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
options: [{
|
|
|
|
|
value: '选项1',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '黄金糕'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项2',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '双皮奶'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项3',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '蚵仔煎'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项4',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '龙须面'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项5',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '北京烤鸭'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}],
|
|
|
|
|
value: ''
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
```
|
2016-08-26 11:46:45 +00:00
|
|
|
|
:::
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
### 有禁用选项
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
:::demo 在`el-option`中,设定`disabled`值为 true,即可禁用该选项
|
2016-07-27 06:15:02 +00:00
|
|
|
|
```html
|
|
|
|
|
<template>
|
2016-08-22 06:07:53 +00:00
|
|
|
|
<el-select v-model="value2">
|
2016-07-27 06:15:02 +00:00
|
|
|
|
<el-option
|
|
|
|
|
v-for="item in options2"
|
|
|
|
|
:label="item.label"
|
|
|
|
|
:value="item.value"
|
|
|
|
|
:disabled="item.disabled">
|
|
|
|
|
</el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
export default {
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
options2: [{
|
|
|
|
|
value: '选项1',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '黄金糕'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项2',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '双皮奶',
|
2016-07-27 06:15:02 +00:00
|
|
|
|
disabled: true
|
|
|
|
|
}, {
|
|
|
|
|
value: '选项3',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '蚵仔煎'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项4',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '龙须面'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项5',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '北京烤鸭'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}],
|
2016-08-22 06:07:53 +00:00
|
|
|
|
value2: ''
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
```
|
2016-08-26 11:46:45 +00:00
|
|
|
|
:::
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
### 禁用状态
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
选择器不可用状态
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
:::demo 为`el-select`设置`disabled`属性,则整个选择器不可用
|
2016-07-27 06:15:02 +00:00
|
|
|
|
```html
|
|
|
|
|
<template>
|
2016-08-26 11:46:45 +00:00
|
|
|
|
<el-select v-model="value3" disabled>
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="item in options"
|
|
|
|
|
:label="item.label"
|
|
|
|
|
:value="item.value">
|
|
|
|
|
</el-option>
|
|
|
|
|
</el-select>
|
2016-07-27 06:15:02 +00:00
|
|
|
|
</template>
|
2016-08-26 11:46:45 +00:00
|
|
|
|
|
2016-07-27 06:15:02 +00:00
|
|
|
|
<script>
|
|
|
|
|
export default {
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
options: [{
|
|
|
|
|
value: '选项1',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '黄金糕'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项2',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '双皮奶'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项3',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '蚵仔煎'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项4',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '龙须面'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项5',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '北京烤鸭'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}],
|
2016-08-22 06:07:53 +00:00
|
|
|
|
value3: ''
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
```
|
2016-08-26 11:46:45 +00:00
|
|
|
|
:::
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
### 可清空单选
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
包含清空按钮,可将选择器清空为初始状态
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
:::demo 为`el-select`设置`clearable`属性,则可将选择器清空。需要注意的是,`clearable`属性仅使用于单选。
|
2016-07-27 06:15:02 +00:00
|
|
|
|
```html
|
|
|
|
|
<template>
|
2016-08-26 11:46:45 +00:00
|
|
|
|
<el-select v-model="value4" clearable>
|
2016-07-27 06:15:02 +00:00
|
|
|
|
<el-option
|
|
|
|
|
v-for="item in options"
|
|
|
|
|
:label="item.label"
|
2016-08-22 06:07:53 +00:00
|
|
|
|
:value="item.value">
|
2016-07-27 06:15:02 +00:00
|
|
|
|
</el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
export default {
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
options: [{
|
|
|
|
|
value: '选项1',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '黄金糕'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项2',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '双皮奶'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项3',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '蚵仔煎'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项4',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '龙须面'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项5',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '北京烤鸭'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}],
|
2016-08-22 06:07:53 +00:00
|
|
|
|
value4: ''
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
```
|
2016-08-26 11:46:45 +00:00
|
|
|
|
:::
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
### 基础多选
|
2016-08-22 06:07:53 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
适用性较广的基础多选,用 Tag 展示已选项
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
:::demo 为`el-select`设置`nultiple`属性即可启用多选,此时`v-model`的值为当前选中值所组成的数组
|
2016-07-27 06:15:02 +00:00
|
|
|
|
```html
|
|
|
|
|
<template>
|
2016-08-26 11:46:45 +00:00
|
|
|
|
<el-select v-model="value5" multiple>
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="item in options"
|
|
|
|
|
:label="item.label"
|
|
|
|
|
:value="item.value">
|
|
|
|
|
</el-option>
|
2016-07-27 06:15:02 +00:00
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
export default {
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
2016-08-26 11:46:45 +00:00
|
|
|
|
options: [{
|
|
|
|
|
value: '选项1',
|
|
|
|
|
label: '黄金糕'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
2016-08-26 11:46:45 +00:00
|
|
|
|
value: '选项2',
|
|
|
|
|
label: '双皮奶'
|
|
|
|
|
}, {
|
|
|
|
|
value: '选项3',
|
|
|
|
|
label: '蚵仔煎'
|
|
|
|
|
}, {
|
|
|
|
|
value: '选项4',
|
|
|
|
|
label: '龙须面'
|
|
|
|
|
}, {
|
|
|
|
|
value: '选项5',
|
|
|
|
|
label: '北京烤鸭'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}],
|
2016-08-26 11:46:45 +00:00
|
|
|
|
value5: []
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
```
|
2016-08-26 11:46:45 +00:00
|
|
|
|
:::
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
### 自定义模板
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
可以自定义备选项
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
:::demo 将自定义的 HTML 模板插入`el-option`的 slot 中即可。
|
2016-07-27 06:15:02 +00:00
|
|
|
|
```html
|
|
|
|
|
<template>
|
2016-07-28 10:37:14 +00:00
|
|
|
|
<el-select v-model="value6">
|
2016-07-27 06:15:02 +00:00
|
|
|
|
<el-option
|
2016-08-15 08:10:12 +00:00
|
|
|
|
v-for="item in cities"
|
2016-07-27 06:15:02 +00:00
|
|
|
|
:label="item.label"
|
2016-07-28 10:37:14 +00:00
|
|
|
|
:value="item.value">
|
2016-08-15 08:10:12 +00:00
|
|
|
|
<span style="float: left">{{ item.label }}</span>
|
|
|
|
|
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.value }}</span>
|
2016-07-27 06:15:02 +00:00
|
|
|
|
</el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
export default {
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
2016-08-15 08:10:12 +00:00
|
|
|
|
cities: [{
|
|
|
|
|
value: 'Beijing',
|
|
|
|
|
label: '北京'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
2016-08-15 08:10:12 +00:00
|
|
|
|
value: 'Shanghai',
|
|
|
|
|
label: '上海'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
2016-08-15 08:10:12 +00:00
|
|
|
|
value: 'Nanjing',
|
|
|
|
|
label: '南京'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
2016-08-15 08:10:12 +00:00
|
|
|
|
value: 'Chengdu',
|
|
|
|
|
label: '成都'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
2016-08-15 08:10:12 +00:00
|
|
|
|
value: 'Shenzhen',
|
|
|
|
|
label: '深圳'
|
|
|
|
|
}, {
|
|
|
|
|
value: 'Guangzhou',
|
|
|
|
|
label: '广州'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}],
|
|
|
|
|
value6: ''
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
```
|
2016-08-26 11:46:45 +00:00
|
|
|
|
:::
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
### 分组
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
备选项进行分组展示
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
:::demo 使用`el-option-group`对备选项进行分组,它的`label`属性为分组名
|
2016-07-27 06:15:02 +00:00
|
|
|
|
```html
|
|
|
|
|
<template>
|
2016-08-26 11:46:45 +00:00
|
|
|
|
<el-select v-model="value7">
|
|
|
|
|
<el-option-group
|
|
|
|
|
v-for="group in options3"
|
|
|
|
|
:label="group.label">
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="item in group.options"
|
|
|
|
|
:label="item.label"
|
|
|
|
|
:value="item.value">
|
|
|
|
|
</el-option>
|
|
|
|
|
</el-option-group>
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
export default {
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
options3: [{
|
|
|
|
|
label: '热门城市',
|
|
|
|
|
options: [{
|
|
|
|
|
value: 'Shanghai',
|
|
|
|
|
label: '上海'
|
|
|
|
|
}, {
|
|
|
|
|
value: 'Beijing',
|
|
|
|
|
label: '北京'
|
|
|
|
|
}]
|
|
|
|
|
}, {
|
|
|
|
|
label: '城市名',
|
|
|
|
|
options: [{
|
|
|
|
|
value: 'Chengdu',
|
|
|
|
|
label: '成都'
|
|
|
|
|
}, {
|
|
|
|
|
value: 'Shenzhen',
|
|
|
|
|
label: '深圳'
|
|
|
|
|
}, {
|
|
|
|
|
value: 'Guangzhou',
|
|
|
|
|
label: '广州'
|
|
|
|
|
}, {
|
|
|
|
|
value: 'Dalian',
|
|
|
|
|
label: '大连'
|
|
|
|
|
}]
|
|
|
|
|
}],
|
|
|
|
|
value7: ''
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
```
|
|
|
|
|
:::
|
|
|
|
|
|
|
|
|
|
### 可搜索
|
|
|
|
|
|
|
|
|
|
可以利用搜索功能快速查找选项
|
|
|
|
|
|
|
|
|
|
:::demo 为`el-select`添加`filterable`属性即可启用搜索功能。默认情况下,Select 会找出所有`label`属性包含输入值的选项。如果希望使用其他的搜索逻辑,可以通过传入一个`filter-method`来实现。`filter-method`为一个`Function`,它会在输入值发生变化时调用,参数为当前输入值。
|
|
|
|
|
```html
|
|
|
|
|
<template>
|
|
|
|
|
<el-select v-model="value8" filterable>
|
2016-07-27 06:15:02 +00:00
|
|
|
|
<el-option
|
|
|
|
|
v-for="item in options"
|
|
|
|
|
:label="item.label"
|
|
|
|
|
:value="item.value">
|
|
|
|
|
</el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
export default {
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
options: [{
|
|
|
|
|
value: '选项1',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '黄金糕'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项2',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '双皮奶'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项3',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '蚵仔煎'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项4',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '龙须面'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, {
|
|
|
|
|
value: '选项5',
|
2016-08-22 06:07:53 +00:00
|
|
|
|
label: '北京烤鸭'
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}],
|
2016-08-26 11:46:45 +00:00
|
|
|
|
value8: ''
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
```
|
2016-08-26 11:46:45 +00:00
|
|
|
|
:::
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
### 远程搜索
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
从服务器搜索数据,输入关键字进行查找
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
:::demo 为了启用远程搜索,需要将`filterable`和`remote`设置为`true`,同时传入一个`remote-method`。`remote-method`为一个`Function`,它会在输入值发生变化时调用,参数为当前输入值。需要注意的是,如果`el-option`是通过`v-for`指令渲染出来的,此时需要为`el-option`添加`key`属性,且其值需具有唯一性,比如此例中的`item.value`。
|
2016-07-27 06:15:02 +00:00
|
|
|
|
```html
|
|
|
|
|
<template>
|
|
|
|
|
<el-select
|
2016-08-26 11:46:45 +00:00
|
|
|
|
v-model="value9"
|
2016-07-27 06:15:02 +00:00
|
|
|
|
multiple
|
|
|
|
|
filterable
|
|
|
|
|
remote
|
2016-08-20 07:00:01 +00:00
|
|
|
|
placeholder="请输入关键词"
|
2016-07-27 06:15:02 +00:00
|
|
|
|
:remote-method="remoteMethod"
|
|
|
|
|
:loading="loading">
|
|
|
|
|
<el-option
|
2016-08-22 06:07:53 +00:00
|
|
|
|
v-for="item in options4"
|
2016-08-20 07:00:01 +00:00
|
|
|
|
:key="item.value"
|
2016-07-27 06:15:02 +00:00
|
|
|
|
:label="item.label"
|
|
|
|
|
:value="item.value">
|
|
|
|
|
</el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
export default {
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
2016-08-22 06:07:53 +00:00
|
|
|
|
options4: [],
|
2016-08-26 11:46:45 +00:00
|
|
|
|
value9: [],
|
2016-08-22 06:07:53 +00:00
|
|
|
|
list: [],
|
2016-07-27 06:15:02 +00:00
|
|
|
|
loading: false,
|
2016-08-26 11:46:45 +00:00
|
|
|
|
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"]
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}
|
|
|
|
|
},
|
2016-08-22 06:07:53 +00:00
|
|
|
|
mounted() {
|
2016-08-26 11:46:45 +00:00
|
|
|
|
this.list = this.states.map(item => {
|
|
|
|
|
return { value: item, label: item };
|
|
|
|
|
});
|
2016-08-22 06:07:53 +00:00
|
|
|
|
},
|
2016-07-27 06:15:02 +00:00
|
|
|
|
methods: {
|
|
|
|
|
remoteMethod(query) {
|
|
|
|
|
if (query !== '') {
|
|
|
|
|
this.loading = true;
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
this.loading = false;
|
2016-08-26 11:46:45 +00:00
|
|
|
|
this.options4 = this.list.filter(item => {
|
|
|
|
|
return item.label.toLowerCase()
|
|
|
|
|
.indexOf(query.toLowerCase()) > -1;
|
|
|
|
|
});
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}, 200);
|
2016-08-22 06:07:53 +00:00
|
|
|
|
} else {
|
|
|
|
|
this.options4 = [];
|
2016-07-27 06:15:02 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
```
|
2016-08-26 11:46:45 +00:00
|
|
|
|
:::
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
### Select Attributes
|
2016-07-27 06:15:02 +00:00
|
|
|
|
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
|
|
|
|
|---------- |-------------- |---------- |-------------------------------- |-------- |
|
2016-08-26 11:46:45 +00:00
|
|
|
|
| multiple | 是否多选 | boolean | - | false |
|
|
|
|
|
| disabled | 是否禁用 | boolean | - | false |
|
|
|
|
|
| clearable | 单选时是否可以清空选项 | boolean | - | false |
|
|
|
|
|
| width | select 的宽度 | number | - | 180(单选)/220(多选) |
|
|
|
|
|
| dropdown-width | 下拉菜单的宽度,不设置则与输入框同宽 | number | - | - |
|
|
|
|
|
| name | select input 的 name 属性 | string | - | - |
|
|
|
|
|
| placeholder | 占位符 | string | - | '请选择' |
|
|
|
|
|
| filterable | 是否可搜索 | boolean | - | false |
|
|
|
|
|
| filter-method | 自定义过滤方法 | function | - | - |
|
|
|
|
|
| remote | 是否为远程搜索 | boolean | - | false |
|
|
|
|
|
| remote-method | 远程搜索方法 | function | | - |
|
|
|
|
|
| loading | 是否正在从远程获取数据 | boolean | - | false |
|
|
|
|
|
|
|
|
|
|
### Select Events
|
2016-08-15 05:35:16 +00:00
|
|
|
|
| 事件名称 | 说明 | 回调参数 |
|
|
|
|
|
|---------|---------|---------|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
| change | 选中值发生变化时触发 | 目前的选中值 |
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
### Option Group Attributes
|
2016-07-27 06:15:02 +00:00
|
|
|
|
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
|
|
|
|
|---------- |-------------- |---------- |-------------------------------- |-------- |
|
2016-08-26 11:46:45 +00:00
|
|
|
|
| label | 分组的组名 | string | - | - |
|
|
|
|
|
| disabled | 是否将该分组下所有选项置为禁用 | boolean | - | false |
|
2016-07-27 06:15:02 +00:00
|
|
|
|
|
2016-08-26 11:46:45 +00:00
|
|
|
|
### Option Attributes
|
2016-07-27 06:15:02 +00:00
|
|
|
|
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|
|
|
|
|
|---------- |-------------- |---------- |-------------------------------- |-------- |
|
2016-08-26 11:46:45 +00:00
|
|
|
|
| value | 选项的值 | string/number/object | - | - |
|
|
|
|
|
| label | 选项的标签,若不设置则默认与 `value` 相同 | string/number | - | - |
|
|
|
|
|
| disabled | 是否禁用该选项 | boolean | - | false |
|