UNPKG

980 BJavaScriptView Raw
1var EventEmitter = require('events').EventEmitter;
2var util = require('racer/lib/util');
3var Dom = require('./Dom');
4
5module.exports = Controller;
6
7function Controller(app, page, model) {
8 EventEmitter.call(this);
9 this.dom = new Dom(this);
10 this.app = app;
11 this.page = page;
12 this.model = model;
13 model.data.$controller = this;
14}
15
16util.mergeInto(Controller.prototype, EventEmitter.prototype);
17
18Controller.prototype.emitCancellable = function() {
19 var cancelled = false;
20 function cancel() {
21 cancelled = true;
22 }
23
24 var args = Array.prototype.slice.call(arguments);
25 args.push(cancel);
26 this.emit.apply(this, args);
27
28 return cancelled;
29};
30
31Controller.prototype.emitDelayable = function() {
32 var args = Array.prototype.slice.call(arguments);
33 var callback = args.pop();
34
35 var delayed = false;
36 function delay() {
37 delayed = true;
38 return callback;
39 }
40
41 args.push(delay);
42 this.emit.apply(this, args);
43 if (!delayed) callback();
44
45 return delayed;
46};