Simple events system
An example showing how simple events system on your device with Tizen 2.3.
Events = function() {};
Events.prototype = {
on: function(eventName, eventHandler) {
this._events = this._events || {};
eventName = eventName.toLowerCase();
this._events[eventName] = this._events[eventName] || [];
// Add event only if it's not already on the events list.
if (this._events[eventName].indexOf(eventHandler) === -1) {
this._events[eventName].push(eventHandler);
}
},
off: function(eventName, eventHandler) {
this._events = this._events || {};
if (arguments.length === 1) {
// Remove all event handlers for given event name.
delete this._events[eventName];
} else if (arguments.length === 2) {
if (!(this._events[eventName] instanceof Array)) {
return;
}
// Remove only one event handler (the passed one) from the events list.
var index = this._events[eventName].indexOf(eventHandler);
if (index >= 0) {
this._events[eventName].splice(index, 1);
}
}
},
emit: function(eventName) {
this._events = this._events || {};
this._events[eventName].forEach(function(eventHandler) {
eventHandler();
});
}
};
Events.mixin = function(obj) {
if (obj instanceof Function) {
for (var methodName in Events.prototype) {
obj.prototype[methodName] = Events.prototype[methodName];
}
} else {
for (var methodName in Events.prototype) {
obj[methodName] = Events.prototype[methodName];
}
}
};
// Usage
var obj = {};
Events.mixin(obj);
obj.on('eventName', function() {
alert('event!');
});
obj.emit('eventName');
// Or
var Class = function() {
};
Events.mixin(Class);
var obj = new Class();
obj.on('eventName', function() {
alert('event!');
});
obj.emit('eventName');