Поскольку вы используете ключевое слово this
в функции, оно будет указывать на область действия успешной функции, а не на внешнюю область, поэтому не будет обновлять переменную внешней области.Есть два решения этой проблемы
1.Используйте функцию стрелки :
$.ajax({
url: queryUrl,
dataType: "json",
method: "GET",
success: (res)=>{
this.searchResult = res;
},
error: function() {
console.log("Error");
}
});
}
Поскольку функция стрелки не имеет своей области видимости.this
в функции стрелки всегда указывает на внешнюю функцию.
2.Скопируйте внешний this
в одну из переменных и затем используйте эту переменную вместо this
:
Скопируйте this
во внешней функции в переменную и затем используйте эту переменную в функции успеха ajax, вв этом случае this
будет указывать на правильный контекст
, как показано ниже
export class HomePageComponent implements OnInit {
apiEndpoint = "myapiendpoint";
searchQuery = "";
searchResult = {};
var that=this; // Copied this into that variable
constructor() {}
onSearchSubmit(e) {
e.preventDefault();
let queryUrl = this.apiEndpoint + this.searchQuery;
$.ajax({
url: queryUrl,
dataType: "json",
method: "GET",
success: function(res) {
that.searchResult = res;// use that instead of this
},
error: function() {
console.log("Error");
}
});
}
ngOnInit() {}
}
Используйте одно из указанных выше решений, и оно решит вашу проблему