在vue component中的methods域里定义一个方法,这个方法中会调用某一个ajax call,在ajax中的this会指向ajax本身,而不再是vue实例本身。
methods: {
typeAhead: function (searchType) {
**var self = this;** //获取vue实例本身,捕获指针指向
var searchURL = "";
switch (searchType) {
case "companyName" :
searchURL = "/my-account/typeAheadCompanyName";
break;
case "repId" :
searchURL = "/my-account/typeAheadRepId";
break;
case "repFirstName" :
searchURL = "/my-account/typeAheadRepFirstName";
break;
case "repLastName" :
searchURL = "/my-account/typeAheadRepLastName";
break;
}
var ajaxData = {};
if(searchType == "companyName" || searchType == "repId") {
ajaxData = {searchKeyWords:this.searchVal};
}
else {
ajaxData = {repFirstName: this.firstName,repLastName: this.lastName}
}
$.ajax({
type : "GET",
url : searchURL,
data : ajaxData,
success : function(result) {
**self.typeAheadResult.length=0;** //清空vue实例data中的数组
for(var i=0;i<result.length;i++){
**self.typeAheadResult.push(result[i]);** //填充vue实例data中的数组
}
**self.showTypeAhead = true;** //修改vue实例中的值,控制typeahead显示结果
},
error : function(e){
**self.showTypeAhead = false;**
}
});
}
}
不要直接用this