내 콜백 함수에 'this'가 표시되지 않습니다.
바인딩 키 누르기의 코드는 다음과 같습니다.
initialize: function () {
$(document).bind('keyup', this.keyPress);
_.bindAll(this, 'rotate');
},
rotate: function (event) {
//smth...
}
여기에 기능 keyPress가 있습니다.
keyPress: function(event) {
console.log(event.keyCode);
var pageX = 0, pageY = 0;
var ev = new Object();
ev.pageY = pageY;
ev.pageX = pageX;
func = this.rotate;
func(ev);
//also I tried like this:
//this.rotate(ev);
}
오류 : "Uncaught TypeError : undefined는 함수가 아닙니다."
나는 그것을 얻을 수 없다.
정말 감사합니다, 감사합니다!
여기서 문제는 JQuery에서 bind가 이벤트 리스너를 추가하지만 'this'의 컨텍스트를 설정하지 않는다는 것입니다.
밑줄을 사용하여 메서드를 컨텍스트에 바인딩해야합니다.
예 :
initialize: function () {
$(document).bind('keyup', _.bind(this.keyPress, this));
_.bindAll(this, 'rotate');
},
rotate: function (event) {
//smth...
}
그러면 'this'가 올바른 개체를 참조하는지 확인할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다