我有一个正常运行的Vue Multiselect,在这里我使用axios调用来填充数据库值中的选项。这样效果很好,可以让我从现有选项中进行选择或输入新选项来创建标签。
按原样,这很完美。但是,我需要一种方法,如果可能的话,每次用户选择并选择或单击Enter键以保存标签选项时,都将再次拨打Axios。有办法吗?
这是我第一次使用Vue,我不确定这是否可行,但基本上我只是想知道每次选择标签或使用Enter键输入标签时如何进行axios呼叫
<div id="tagApp">
<multiselect
label="tag_data"
track-by="campaign_tag_id"
v-model="value"
:options="options"
:multiple="true"
:taggable="true"
@tag="addTag"
@search-change="val => read(val)"
:preselect-first="false"
:close-on-select="false"
:clear-on-select="true"
:preserve-search="true"
tag-placeholder="Add this as new tag"
placeholder="Search or add a tag"
></multiselect>
</div>
new Vue({
components: {
Multiselect: window.VueMultiselect.default
},
el: "#tagApp",
data() {
return{
value: [],
loading: false,
options: []
}
},
methods: {
read: function(val){
//console.log('searched for', val);
if (val) {
this.loading = true;
this.options = [];
const self = this;
console.log(val);
axios.get('campaigns/search',{params: {query: val}})
.then(function (response) {
self.options = response.data;
console.log(response.data);
});
} else {
this.options = [];
}
},
addTag(newTag) {
const tag = {
tag_data: newTag,
};
this.options.push(tag);
this.value.push(tag);
}
}
})
答案 0 :(得分:1)
监视@select事件并触发将发生Axios调用的函数。
<div id="tagApp">
<multiselect
...
@select= "callAxios"
...
></multiselect>
</div>
...
methods: {
callAxios: function(val){
//your Axios call here
},
...
}
...