У меня есть простой класс, коробка:Coffeescript - Почему атрибуты моего класса undefined onclick?
class Box
constructor: (@idx, grid) ->
console.log("constructing", @idx)
@elem = document.createElement("div")
@elem.id = "box" + idx
@elem.className = "box"
@elem.onclick = @toggle
grid.appendChild(@elem)
toggle:() ->
alert("click")
console.log("My idx is: ", @idx)
Когда конструктор запускает его отчеты «построение 0», «строительство 1» и т.д., так что я знаю, атрибут класса определяются. И если я вызываю b.toggle() (где b - экземпляр ящика), тогда он правильно сообщает idx. Но как только я нажимаю на элемент на странице, он говорит, что @idx не определен.
Так что кажется, что атрибуты коробки теряются в непосредственной близости от вещей. Почему это?
Вот скомпилированного JavaScript:
Box = (function() {
function Box(idx, grid) {
this.idx = idx;
console.log("constructing", this.idx);
this.elem = document.createElement("div");
this.elem.id = "box" + idx;
this.elem.className = "box";
this.elem.onclick = this.toggle;
grid.appendChild(this.elem);
}
Box.prototype.toggle = function() {
alert("click");
return console.log("My idx is: ", this.idx);
};
return Box;
})();
Спасибо!
спасибо, что сработал. – dandelion