我正在尝试使用 vue-multiselect 实现自动完成,它具有异步服务器调用,但我使用 debounce 函数来延迟服务器中的调用,但我遇到了问题。问题是我无法从我使用 debounce 的方法中调用另一个方法。我的代码如下:
<script>
import Multiselect from 'vue-multiselect';
import _ from 'lodash';
export default {
name: "required-information",
components:{
Multiselect
},
data(){
return {
tripType:1,
depart_date:null,
return_date:null,
selectedAirport:null,
depart_from_airports:[],
selectedToAirport:null,
depart_to_airports:[],
adults:null,
children_no:null,
flight_class:null,
infants:null,
airlines:[],
selectedAirline:[],
}
},
methods:{
formatAirport:()=>{
console.log("q");
// let new_airports=[];
// for(let i=0;i<airports.length;i++){
// let city=airports[i].airport+' ('+airports[i].code+')';
// let push_data={
// name:city,
// code:response[i].code
// }
// new_airports.push(push_data)
// }
// return new_airports;
},
asyncFind: _.debounce(query => {
if(!query)
return;
axios.get("/airport-list?query="+query).then((response)=>{
this.formatAirport();
}).catch((error)=>{
console.log(error);
})
}, 1000),
}
}
它没有记录 q ,而是将错误显示为:
TypeError: _this.formatAirport is not a function
at app.js:66754
at <anonymous>
我从以下代码行调用了 asyncFind
<multiselect v-model="selectedAirport" id="depart_form" track-by="name" label="name" placeholder="Select one" :options="depart_from_airports" :searchable="true" @search-change="asyncFind" />