UNPKG

1.19 kBJavaScriptView Raw
1
2var Backbone = require("backbone");
3var Class = require("./Class");
4
5var _ = require("underscore");
6
7var EventedClass = Class.extend("EventedClass", _.extend(Backbone.Events, {
8
9 // EventedClass's constructor handles props like:
10 // events:{
11 // "event_name": "method name",
12 // "evt": ["method1", "method2", function(){}],
13 // "event": function(){ ... }
14 // }
15
16 constructor: function(){
17 if(_.isObject(this.events)){
18 for(event in this.events){ var evt = this.events[event];
19
20 if(_.isFunction(evt)) this.on(event, evt, this);
21
22 else if(_.isString(evt) && _.isFunction(this[evt])){
23 this.on(event, this[evt], this);
24 }
25
26 else if(_.isArray(evt)){
27 for(var i = 0;i< evt.length;i++){ var meth = evt[i];
28 if(_.isString(meth) && _.isFunction(this[meth])){
29 this.on(event, this[meth], this);
30 }
31 else if(_.isFunction(meth)){
32 this.on(event, meth, this);
33 }
34 }
35 }
36 }
37 }
38 Class.apply(this, arguments);
39 }
40
41}), Backbone.Events);
42module.exports = EventedClass;