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,9 +478,8 @@
setQuery (query) { setQuery (query) {
if (!this.filterable) return; if (!this.filterable) return;
this.query = query; this.query = query;
}
}, },
compiled () { modelToQuery() {
if (!this.multiple && this.filterable && this.model) { if (!this.multiple && this.filterable && this.model) {
this.findChild((child) => { this.findChild((child) => {
if (this.model === child.value) { if (this.model === child.value) {
@ -494,6 +493,10 @@
} }
}); });
} }
}
},
compiled () {
this.modelToQuery();
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,22 +1,28 @@
<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>
export default { const cityList = [
data () {
return {
cityList: [
{ {
value: 'beijing', value: 'beijing',
label: '北京市' label: '北京市'
@ -41,10 +47,24 @@
value: 'chongqing', value: 'chongqing',
label: '重庆市' label: '重庆市'
} }
], ]
model11: '', export default {
data () {
return {
cityList1: cityList,
model111: '',
cityList2: [],
model112: 'beijing',
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');
} }
} }
} }