mirror of
https://github.com/Hopiu/fabric.js.git
synced 2026-04-16 04:10:58 +00:00
62 lines
No EOL
1.5 KiB
JavaScript
62 lines
No EOL
1.5 KiB
JavaScript
/**
|
|
* @namespace
|
|
*/
|
|
fabric.Observable = {
|
|
|
|
/**
|
|
* Observes specified event
|
|
* @method observe
|
|
* @param {String} eventName
|
|
* @param {Function} handler
|
|
*/
|
|
observe: function(eventName, handler) {
|
|
if (!this.__eventListeners) {
|
|
this.__eventListeners = { };
|
|
}
|
|
// one object with key/value pairs was passed
|
|
if (arguments.length === 1) {
|
|
for (var prop in eventName) {
|
|
this.observe(prop, eventName[prop]);
|
|
}
|
|
}
|
|
else {
|
|
if (!this.__eventListeners[eventName]) {
|
|
this.__eventListeners[eventName] = [ ];
|
|
}
|
|
this.__eventListeners[eventName].push(handler);
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Stops event observing for a particular event handler
|
|
* @method stopObserving
|
|
* @param {String} eventName
|
|
* @param {Function} handler
|
|
*/
|
|
stopObserving: function(eventName, handler) {
|
|
if (!this.__eventListeners) {
|
|
this.__eventListeners = { };
|
|
}
|
|
if (this.__eventListeners[eventName]) {
|
|
fabric.util.removeFromArray(this.__eventListeners[eventName], handler);
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Fires event with an optional memo object
|
|
* @method fire
|
|
* @param {String} eventName
|
|
* @param {Object} [memo]
|
|
*/
|
|
fire: function(eventName, memo) {
|
|
if (!this.__eventListeners) {
|
|
this.__eventListeners = { }
|
|
}
|
|
var listenersForEvent = this.__eventListeners[eventName];
|
|
if (!listenersForEvent) return;
|
|
for (var i = 0, len = listenersForEvent.length; i < len; i++) {
|
|
// avoiding try/catch for perf. reasons
|
|
listenersForEvent[i]({ memo: memo });
|
|
}
|
|
}
|
|
}; |