|
|
|
@ -2,6 +2,7 @@ define(function (require) {
|
|
|
|
|
"use strict"; |
|
|
|
|
var _ = require('underscore'); |
|
|
|
|
var $ = require('jquery'); |
|
|
|
|
var EventEmitter = require('events'); |
|
|
|
|
|
|
|
|
|
function get(domRoot) { |
|
|
|
|
var result = {}; |
|
|
|
@ -12,8 +13,8 @@ define(function (require) {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function Toggles(root, state) { |
|
|
|
|
EventEmitter.call(this); |
|
|
|
|
this.domRoot = root; |
|
|
|
|
this.changeHandlers = []; |
|
|
|
|
state = state || this.get(); |
|
|
|
|
this.domRoot.find('.btn') |
|
|
|
|
.click(_.bind(this.onClick, this)) |
|
|
|
@ -23,6 +24,8 @@ define(function (require) {
|
|
|
|
|
this.state = get(this.domRoot); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
_.extend(Toggles.prototype, EventEmitter.prototype); |
|
|
|
|
|
|
|
|
|
Toggles.prototype.get = function () { |
|
|
|
|
return this.state; |
|
|
|
|
}; |
|
|
|
@ -32,15 +35,7 @@ define(function (require) {
|
|
|
|
|
button.toggleClass('active'); |
|
|
|
|
var before = this.state; |
|
|
|
|
var after = this.state = get(this.domRoot); |
|
|
|
|
_.each(this.changeHandlers, function (f) { |
|
|
|
|
f(before, after); |
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
Toggles.prototype.on = function (event, handler, that) { |
|
|
|
|
if (event === "change") { |
|
|
|
|
this.changeHandlers.push(_.bind(handler, that)); |
|
|
|
|
} |
|
|
|
|
this.emit('change', before, after); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
return Toggles; |
|
|
|
|