を添加異なるHTMLに切り替えるので特有スコープ機能
class A{
setUp(){
//addEventListener
$("#id")[0].addEventListener("click",this.rollDiePressed);
}
rollDiePressed(){
console.log(this)
}
addHtml(){
var actionTemplate =
'<div onclick="ctrl.rollDiePressed()">' +
'ROLL' +
'</div>'
//add the html
$("#htmlarea").html(resultHtml);
}
}
がHTMLをクリックするようにイベントリスナーを追加する場合は、「この」rollDiePressed内部素子自体にrefferingされることを意味します。これを行う必要のあるクラスを参照したい場合は
$("#id")[0].addEventListener("click",this.rollDiePressed.bind(this));
これまでのところすべてが良いです。しかし、addHtml()
のようなhtmlを追加すると、rollDiePressed()を呼び出すことは、(setUpのメソッドで起こりますが)クラス自体を参照しているので、要素自体を参照していません!
どうしてですか?私はデフォルトでイベントが常に要素を参照すると思った。 htmlのリファレンスとして「this」を追加すると、なぜこれが起こるのかを理解することに非常に興味があります。
これは実際にはかなり意味があります。当時ありがとう –