"Искусственные" события.
Что-то найти никак не могу как реализовать вот это:
myObj.onMyEvent = что-то делать //если где-то что-то произошло, то: MyEvent.fire(); Смысл в том, что мы вызываем (генерируем) какое-то своё событие (MyEvent) при этом есть объект "myObj" котрый умеет узнавать что произошло событие "MyEvent" и как-то по-своему реагирует на него, помимо этого может быть ещё много всяких объектов, котрые каждый по-своему реагируют на "MyEvent". Я знаю, есть "observer pattern" но там я что-то не найду ответ. Господа, ткните носом, пожалуйста, где читать. Или такое в природе вообще не возможно или не так делается, а вовсе по-другому. |
Решение:
var customEvents = {
_handlers : {},
subscribe: function(event, handler){
if(typeof(this._handlers[event])=="undefined")
this._handlers[event]=[];
this._handlers[event].push(handler);
},
fire:function(event, data){
if(this._handlers[event]){
for(var i = 0; i < this._handlers[event].length; i++){
this._handlers[event][i](data);
}
}
}
};
var myObj1 = new function(){
this.handler = function(data){
console.log(data+'1');
};
customEvents.subscribe("greatEvent", this.handler);
};
var myObj2 = new function(){
this.handler = function(data){
console.log(data+'2');
};
customEvents.subscribe("greatEvent", this.handler);
};
//что-то где-то произошло
customEvents.fire("greatEvent", 'ta-da');
всем спасибо, все свободны |
| Часовой пояс GMT +3, время: 02:27. |