Я конвертирую код в ES6, и в какой-то части я пытаюсь понять привязку жирной стрелки. У меня был такой код:Fat arrow delegation
function callApi(api, payload, header) {
$http.post(api, payload, header)
.success(function(data) {...})
.error(function (data, status) { handleError(data, status) })
}
function handleError(data, status) {...}
я изменила, что к этому, который работает:
callApi(api, payload, header) {
this.$http.post(api, payload, header)
.success((data) => {...})
.error((data, status) => this.handleError(data, status))
}
handleError(data, status) {...}
Что не работает, когда я пытался позвонить HandleError так:
.error((data, status) => this.handleError)
Я думал, что это может быть делегирование обработки ошибок функции handleError, но это не так. Может кто-нибудь помочь мне понять, что я не понимаю о привязке к стрелке, что его нельзя использовать как() => myFunction, и есть ли способ сделать такую делегию, которая включает привязку this
?
'(a, b) => c' то же, что и' function (a, b) {return c} .bind (this) ' – elclanrs
, это должно быть просто' .error (handleError) 'не нужно для ES6 для того, чтобы работать правильно. – zzzzBov
'.error (handleError)' приводит к «handleError not defined». '.error (this.handleError)' rsesults в ошибке внутри handleError, когда я пытаюсь использовать 'this', что' this' не определено. – Kip