iview/examples/routers/select.vue

96 lines
3.2 KiB
Vue
Raw Normal View History

<template>
2017-04-27 17:35:47 +08:00
<div style="width: 200px;margin: 100px;">
2017-05-08 10:01:07 +08:00
{{ model }}
2017-05-05 14:20:46 +08:00
<i-select v-model="model" filterable remote :remote-method="remoteMethod" :loading="loading" clearable style="width:200px">
<i-option v-for="option in options" :value="option.value" :key="option">{{option.label}}</i-option>
2017-04-28 11:16:40 +08:00
</i-select>
2017-05-05 14:20:46 +08:00
<!--<Button @click="handleAdd">+</Button>-->
2017-04-27 17:35:47 +08:00
</div>
</template>
2017-04-22 14:00:10 +08:00
<script>
export default {
data () {
return {
2017-05-05 14:20:46 +08:00
model: '',
2017-04-28 11:16:40 +08:00
options: [
2017-05-05 14:20:46 +08:00
],
list: [],
loading: false,
2017-05-08 10:21:33 +08:00
states: ["Al", "Alabama", "Alaska", "Arizona",
2017-05-05 14:20:46 +08:00
"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"]
}
},
mounted () {
this.options = [
// {
// label: '全部',
// value: 0
// },{
// label: '苹果',
// value: 1
// },{
// label: '香蕉',
// value: 2
// },{
// label: '西瓜',
// value: 3
// }
];
},
methods: {
handleAdd () {
this.options = [
{
label: '全部',
value: 0
},{
label: '苹果',
value: 1
},{
label: '香蕉',
value: 2
},{
label: '西瓜',
value: 3
}
2017-04-28 11:16:40 +08:00
]
2017-05-05 14:20:46 +08:00
},
remoteMethod (query) {
if (query !== '') {
this.loading = true;
setTimeout(() => {
this.loading = false;
this.options = this.list.filter(item => {
return item.label.toLowerCase()
.indexOf(query.toLowerCase()) > -1;
});
2017-05-08 10:01:07 +08:00
}, 500);
2017-05-05 14:20:46 +08:00
} else {
this.options = [];
}
}
2017-04-28 11:16:40 +08:00
},
mounted () {
2017-05-05 14:20:46 +08:00
this.list = this.states.map(item => {
return { value: item, label: item };
});
}
}
2017-04-22 14:00:10 +08:00
</script>