source: Dev/trunk/src/client/dojox/app/Controller.js

Last change on this file was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

  • Property svn:executable set to *
File size: 2.0 KB
Line 
1define(["dojo/_base/lang", "dojo/_base/declare", "dojo/on"], function(lang, declare, on){
2        // module:
3        //              dojox/app/Controller
4        // summary:
5        //              Bind events on dojox/app application's dojo/Evented instance or document.
6
7        return declare("dojox.app.Controller", null, {
8                constructor: function(app, events){
9                        // summary:
10                        //              bind events on application dojo/Evented instance.
11                        //              bind css selector events on document.
12                        //
13                        // app:
14                        //              dojox/app application instance.
15                        // events:
16                        //              {event : handler}
17
18                        this.events = this.events || events;
19                        this._boundEvents = [];
20                        this.app = app;
21                },
22
23                bind: function(evented, event, handler){
24                        // summary:
25                        //              Bind event on dojo/Evented instance, document, domNode or window.
26                        //              Save event signal in controller instance. If no parameter is provided
27                        //              automatically bind all events registered in controller events property.
28                        //
29                        // evented: Object
30                        //              dojo/Evented instance, document, domNode or window
31                        // event: String
32                        //              event
33                        // handler: Function
34                        //              event handler
35                        if(arguments.length == 0){
36                                if(this.events){
37                                        for(var item in this.events){
38                                                if(item.charAt(0) !== "_"){//skip the private properties
39                                                        this.bind(this.app, item, lang.hitch(this, this.events[item]));
40                                                }
41                                        }
42                                }
43                        }else{
44                                var signal = on(evented, event, handler);
45                                this._boundEvents.push({
46                                        "event": event,
47                                        "evented": evented,
48                                        "signal": signal
49                                });
50                        }
51                        return this;
52                },
53
54                unbind: function(evented, event){
55                        // summary:
56                        //              remove a binded event signal.
57                        //
58                        // evented: Object
59                        //              dojo/Evented instance, document, domNode or window
60                        // event: String
61                        //              event
62
63                        var len = this._boundEvents.length;
64                        for(var i = 0; i < len; i++){
65                                if((this._boundEvents[i]['event'] == event) && (this._boundEvents[i]['evented'] == evented)){
66                                        this._boundEvents[i]['signal'].remove();
67                                        this._boundEvents.splice(i, 1);
68                                        return;
69                                }
70                        }
71                        console.warn("event '"+event+"' not bind on ", evented);
72                        return this;
73                }
74        });
75});
Note: See TracBrowser for help on using the repository browser.