|
@@ -463,7 +463,9 @@
|
|
|
|
|
|
deletePrevTag(e) {
|
|
|
if (e.target.value.length <= 0 && !this.toggleLastOptionHitState()) {
|
|
|
- this.value.pop();
|
|
|
+ const value = this.value.slice();
|
|
|
+ value.pop();
|
|
|
+ this.$emit('input', value);
|
|
|
}
|
|
|
},
|
|
|
|
|
@@ -506,26 +508,23 @@
|
|
|
},
|
|
|
|
|
|
handleOptionSelect(option) {
|
|
|
- if (!this.multiple) {
|
|
|
- this.$emit('input', option.value);
|
|
|
- this.visible = false;
|
|
|
- } else {
|
|
|
- let optionIndex = -1;
|
|
|
- this.value.forEach((item, index) => {
|
|
|
- if (item === option.value) {
|
|
|
- optionIndex = index;
|
|
|
- }
|
|
|
- });
|
|
|
+ if (this.multiple) {
|
|
|
+ const value = this.value.slice();
|
|
|
+ const optionIndex = value.indexOf(option.value);
|
|
|
if (optionIndex > -1) {
|
|
|
- this.value.splice(optionIndex, 1);
|
|
|
- } else if (this.multipleLimit <= 0 || this.value.length < this.multipleLimit) {
|
|
|
- this.value.push(option.value);
|
|
|
+ value.splice(optionIndex, 1);
|
|
|
+ } else if (this.multipleLimit <= 0 || value.length < this.multipleLimit) {
|
|
|
+ value.push(option.value);
|
|
|
}
|
|
|
+ this.$emit('input', value);
|
|
|
if (option.created) {
|
|
|
this.query = '';
|
|
|
this.inputLength = 20;
|
|
|
}
|
|
|
if (this.filterable) this.$refs.input.focus();
|
|
|
+ } else {
|
|
|
+ this.$emit('input', option.value);
|
|
|
+ this.visible = false;
|
|
|
}
|
|
|
},
|
|
|
|
|
@@ -601,7 +600,9 @@
|
|
|
deleteTag(event, tag) {
|
|
|
let index = this.selected.indexOf(tag);
|
|
|
if (index > -1 && !this.disabled) {
|
|
|
- this.value.splice(index, 1);
|
|
|
+ const value = this.value.slice();
|
|
|
+ value.splice(index, 1);
|
|
|
+ this.$emit('input', value);
|
|
|
this.$emit('remove-tag', tag);
|
|
|
}
|
|
|
event.stopPropagation();
|