Pytanie brzmi trochę dziwne, ale teraz wytłumaczę dlaczego:
this.validator.getStore().login.addEventListener("keyup",
(event) => this.bindMethod(event, (event) => this.isNickBusy(event)));
Co ten kod robi. Wywołuje magazyn, a ten zwraca obiekt DOM, na którym uruchamiam listener, a ten bindujeMetody oraz element targetingu. Wygląda cudacznie, ale za chwilę powiem dlaczego.
bindMethod(element, func) {
window.setTimeout(() => func(element), 100);
}
Dlaczego tak ? próbowałem, przekazać argument do interfejsu funkcji.
Zrobiłem dokładnie coś takiego:
this.validator.getStore().password.addEventListener('keyup',
(event) => window.setTimeout(event => this.isNickBusy(event), 100);
Czyli obiekt Event przekazany do innego obiektu po przez funkcje.
Czy się udało?
Niestety, zwrócił undefined. Dlatego wykorzystałem te powyższe rozwiązanie.
A chciałbym uzyskać taki efekt?
this.validator.getStore().login.addEventListener("keyup",
(event) => this.bindMethod((event) => this.isNickBusy(event)));
czyli ma przyjąć argumencie funkcje z wcześniejszą wartością, niestety oczywiście tak się nie dzieje.
Wydaje mi się, że nie da się tego zrobić, aczkolwiek może jest jakiś trik na to.
Dla tych co chcą wiedzieć co się dzieje w głębiej:
isNickBusy(validElement) {
if (validElement.target.value.length > 3) {
this.valid = false;
let logNickRoute = `http://${location.hostname}:${this.config.port}`
+ "/api/" + `${this.config.log_route_nick}`
+ `${validElement.target.value}`;
Axios.get(logNickRoute, AxiosConfig)
.then(response => this.isErrorNick(response, validElement))
.catch(() => this.validator.setException('errorApi', this.parent));
}
}
isErrorNick(response, validElement) {
this.valid = response.data.status;
if (this.valid) {
this.validator.setWarning("login", "nickIsBusy");
this.errorSlot.nick = true;
} else if (this.errorSlot.nick && !this.valid) {
this.validator.cleanLog(validElement, "nickIsBusy");
this.errorSlot.nick = false;
}
}