newLocationNameSearch
Асинхронная функция.Асинхронные функции возвращают обещания, поэтому, когда вы пишете
var hasName = this.newLocationNameSearch(value);
hasName установлен на обещание, которое всегда верно.
Вам нужно что-то вроде:
isLocationNew: async value => {
if (value == '' || value == null || value.length <= 1) {
this.validLocation = false;
return 'Invalid length.';
}
this.validLocation = true;
var hasName = await this.newLocationNameSearch(value);
if (hasName) {
return 'Location name already exists.';
} else {
return true;
}
}
И помните, что везде, где вызывается isLocationNew, его также нужно ожидать.
Кроме того, метод newLocationNameSearch
фактически не возвращает значение при ожидании.
await axios.get('/api/Locations/HasLocationName', {
params: {
text: text,
jobsiteId: this.jobsiteId
}
}).then(response => {
return response.data;
}).catch(function(error) {
console.log(error)
})
Имеетоператор возврата внутри обратного вызова для вызова .then()
.newLocationNameSearch
тогда ничего не возвращает, то есть возвращает undefined
, что ложно.
Хорошая новость заключается в том, что async / await означает, что нам больше не нужно беспокоиться о then
обратных вызовах.
Вместо этого мы можем написать
try {
var response = await axios.get('/api/Locations/HasLocationName', {
params: {
text: text,
jobsiteId: this.jobsiteId
}
});
return response.data;
} catch (error) {
console.log(error)
}