Merge pull request #258 from YikaJ/master

Select组件/Tag组件
This commit is contained in:
Aresn 2017-02-15 10:29:04 +08:00 committed by GitHub
commit 8f48491aa6
4 changed files with 77 additions and 44 deletions

View file

@ -478,22 +478,25 @@
setQuery (query) { setQuery (query) {
if (!this.filterable) return; if (!this.filterable) return;
this.query = query; this.query = query;
},
modelToQuery() {
if (!this.multiple && this.filterable && this.model) {
this.findChild((child) => {
if (this.model === child.value) {
if (child.label) {
this.query = child.label;
} else if (child.searchLabel) {
this.query = child.searchLabel;
} else {
this.query = child.value;
}
}
});
}
} }
}, },
compiled () { compiled () {
if (!this.multiple && this.filterable && this.model) { this.modelToQuery();
this.findChild((child) => {
if (this.model === child.value) {
if (child.label) {
this.query = child.label;
} else if (child.searchLabel) {
this.query = child.searchLabel;
} else {
this.query = child.value;
}
}
});
}
this.updateOptions(true); this.updateOptions(true);
document.addEventListener('keydown', this.handleKeydown); document.addEventListener('keydown', this.handleKeydown);
@ -501,6 +504,7 @@
// watch slot changed // watch slot changed
if (MutationObserver) { if (MutationObserver) {
this.observer = new MutationObserver(() => { this.observer = new MutationObserver(() => {
this.modelToQuery();
this.slotChange(); this.slotChange();
this.updateOptions(true, true); this.updateOptions(true, true);
}); });
@ -521,6 +525,7 @@
}, },
watch: { watch: {
model () { model () {
this.modelToQuery();
if (this.multiple) { if (this.multiple) {
if (this.slotChangeDuration) { if (this.slotChangeDuration) {
this.slotChangeDuration = false; this.slotChangeDuration = false;

View file

@ -1,6 +1,6 @@
<template> <template>
<div :class="classes" transition="fade"> <div :class="classes" transition="fade">
<span :class="dotClasses" v-if="showDot"></span><span :class="textClasses"><slot></slot></span><Icon v-if="closable" type="ios-close-empty" @click="close"></Icon> <span :class="dotClasses" v-if="showDot"></span><span :class="textClasses"><slot></slot></span><Icon v-if="closable" type="ios-close-empty" @click.stop="close"></Icon>
</div> </div>
</template> </template>
<script> <script>

View file

@ -1,50 +1,70 @@
<template> <template>
<Row> <Row>
<i-col span="12" style="padding-right:10px"> <i-col span="12" style="padding-right:10px">
<i-select :model.sync="model11" filterable> <i-select :model.sync="model111" filterable>
<i-option v-for="item in cityList" :value="item.value">{{ item.label }}</i-option> <i-option v-for="item in cityList1" :value="item.value">{{ item.label }}</i-option>
</i-select> </i-select>
</i-col> </i-col>
</Row>
<Row>
<i-col span="12" style="padding-right:10px">
<i-select :model.sync="model112" filterable>
<i-option v-for="item in cityList2" :value="item.value">{{ item.label }}</i-option>
</i-select>
</i-col>
</Row>
<Row>
<i-col span="12"> <i-col span="12">
<i-select :model.sync="model12" filterable multiple> <i-select :model.sync="model12" filterable multiple>
<i-option v-for="item in cityList" :value="item.value">{{ item.label }}</i-option> <i-option v-for="item in cityList1" :value="item.value">{{ item.label }}</i-option>
</i-select> </i-select>
</i-col> </i-col>
</Row> </Row>
</template> </template>
<script> <script>
const cityList = [
{
value: 'beijing',
label: '北京市'
},
{
value: 'shanghai',
label: '上海市'
},
{
value: 'shenzhen',
label: '深圳市'
},
{
value: 'hangzhou',
label: '杭州市'
},
{
value: 'nanjing',
label: '南京市'
},
{
value: 'chongqing',
label: '重庆市'
}
]
export default { export default {
data () { data () {
return { return {
cityList: [ cityList1: cityList,
{ model111: '',
value: 'beijing',
label: '北京市' cityList2: [],
}, model112: 'beijing',
{
value: 'shanghai',
label: '上海市'
},
{
value: 'shenzhen',
label: '深圳市'
},
{
value: 'hangzhou',
label: '杭州市'
},
{
value: 'nanjing',
label: '南京市'
},
{
value: 'chongqing',
label: '重庆市'
}
],
model11: '',
model12: [] model12: []
} }
},
ready() {
this.model111 = 'hangzhou'
setTimeout(()=>{
this.cityList2 = cityList
}, 500)
} }
} }
</script> </script>

View file

@ -40,6 +40,8 @@
<i-button @click="loading = true">true</i-button> <i-button @click="loading = true">true</i-button>
<i-button @click="loading = false">false</i-button> <i-button @click="loading = false">false</i-button>
</Modal> </Modal>
<br><br>
<Tag type="border" color="yellow" closable @click="clickTag" @on-close="clickTagClose">标签一</Tag>
</template> </template>
<script> <script>
import { Tag, Modal, iButton } from 'iview'; import { Tag, Modal, iButton } from 'iview';
@ -56,6 +58,12 @@
setTimeout(() => { setTimeout(() => {
this.modal1 = false; this.modal1 = false;
}, 2000); }, 2000);
},
clickTag() {
console.log('click tag');
},
clickTagClose() {
console.log('click tag close-icon');
} }
} }
} }