Класс как наблюдатель событий - PullRequest
1 голос
/ 04 марта 2010

Я хочу сделать что-то вроде этого ...

var Color = Class.create({
    initialize: function() {
        this._color = "white";
        this.observe("evt: colorChanged", this.colorChanged.bind(this));
    },
    changeColor: function(color) {
        this._color = color;
        this.fire("evt: colorChanged");
    },
    colorChanged: function(event) {
        alert("You change my color!");
    }
});
var a = new Color().changeColor("blue");

Почему пользовательское событие colorChange никогда не отправляется, и мне нужно использовать вместо this элемент DOM, такой как document.observe?

В моем коде я хотел бы знать, какой класс отправляет событие, используя event.target, и я не могу, если я должен использовать document или какой-либо другой элемент DOM. (

Я работал в ActionScript 3, и я научился методике работы с пользовательскими событиями в классах. А как насчет Javascript?

1 Ответ

0 голосов
/ 05 марта 2010

Это должно работать:

var Color = Class.create({
    initialize: function() {
        this._color = "white";
        Event.observe(document, "evt: colorChanged", this.colorChanged.bind(this));
    },
    changeColor: function(color) {
        this._color = color;
        Event.fire(document, "evt: colorChanged", this, false);
    },
    colorChanged: function(event) {
        alert("You change my color!");
    }
});
var a = new Color().changeColor("blue");
...