Sha256: a061176d43ce8c811a830d27a23011c1879ad75ce6c64431e77c0fda8ff88337

Contents?: true

Size: 1.03 KB

Versions: 2

Compression:

Stored size: 1.03 KB

Contents

include('data.js');
/**
 * Легковесная поддержка событий без баблинга
 */
uki.data.Observable = {
    bind: function(name, callback) {
        var _this = this;
        uki.each(name.split(' '), function(i, name) {
            _this._observersFor(name).push(callback);
        });
    },
    
    unbind: function(name, callback) {
        var _this = this;
        uki.each(name.split(' '), function(i, name) {
            _this._observers[name] = uki.grep(_this._observersFor(name), function(c) {
                return c != callback;
            });
        });
    },
    
    trigger: function(name/*, data1, data2*/) {
        var attrs = Array.prototype.slice.call(arguments, 1);
        uki.each(this._observersFor(name), function(i, callback) {
            callback.apply(this, attrs);
        });
    },
    
    _observersFor: function(name) {
        if (!this._observers) this._observers = {};
        if (!this._observers[name]) this._observers[name] = [];
        return this._observers[name];
    }
};

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
uki-1.0.1 frameworks/uki/src/uki-data/observable.js
uki-1.0.0 frameworks/uki/src/uki-data/observable.js