console
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head>
<body>
<div id="app">
<el-button @click="visible = true">Button</el-button>
<el-dialog :visible.sync="visible" title="Hello world">
<p>Try Element</p>
</el-dialog>
<section class="p-10">
<el-select v-model="value" placeholder="请选择" filterable :filter-method="dataFilter">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</section>
</div>
</body>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<script>
new Vue({
el: '#app',
data: function() {
return { visible: false,
optionsCopy: [{
value: '1',
label: 'meat'
}, {
value: '2',
label: 'drink'
}, {
value: '3',
label: 'food'
}, {
value: '4',
label: '龙须面'
}, {
value: '5',
label: '北京烤鸭'
}],
options: [{
value: '1',
label: 'meat'
}, {
value: '2',
label: 'drink'
}, {
value: '3',
label: 'food'
}, {
value: '4',
label: '龙须面'
}, {
value: '5',
label: '北京烤鸭'
}],
value: '' }
},
methods: {
dataFilter(val) {
this.value = val;
if (val) {
this.options = this.optionsCopy.filter((item) => {
if (!!~item.label.indexOf(val) || !!~item.label.toUpperCase().indexOf(val.toUpperCase())) {
return true
}
})
} else {
this.options = this.optionsCopy;
}
}
}
})
</script>
</html>