todomvc
Version:
> Helping you select an MV\* framework
60 lines (52 loc) • 1.36 kB
JavaScript
/*!
* CanJS - 2.0.3
* http://canjs.us/
* Copyright (c) 2013 Bitovi
* Tue, 26 Nov 2013 18:21:22 GMT
* Licensed MIT
* Includes: CanJS default build
* Download from: http://canjs.us/
*/
define(["can/util/library"], function(can){
/**
* @typedef {{bind:function():*,unbind:function():*}} can/util/bind
*
* Provides mixin-able bind and unbind methods. `bind()` calls `this._bindsetup`
* when the first bind happens and. `unbind()` calls `this._bindteardown` when there
* are no more event handlers.
*
*/
// ## Bind helpers
can.bindAndSetup = function() {
// Add the event to this object
can.addEvent.apply(this, arguments);
// If not initializing, and the first binding
// call bindsetup if the function exists.
if(!this._init){
if(!this._bindings ){
this._bindings = 1;
// setup live-binding
this._bindsetup && this._bindsetup();
} else {
this._bindings++;
}
}
return this;
};
can.unbindAndTeardown = function(ev, handler) {
// Remove the event handler
can.removeEvent.apply(this, arguments);
if(this._bindings == null) {
this._bindings = 0;
} else {
this._bindings--;
}
// If there are no longer any bindings and
// there is a bindteardown method, call it.
if(!this._bindings){
this._bindteardown && this._bindteardown();
}
return this;
}
return can;
});