-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathStage.js
40 lines (38 loc) · 1.34 KB
/
Stage.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
define(function (require, exports, module) {
/**
* Stage parse modules on page dom
*/
var $ = require('$');
var mcenter = require('message');
var cellula = require('cellula');
var moduleNameProp = 'data-module';
var moduleSelector = '*['+moduleNameProp+']';
var Stage = {
modules:{},
init:function (dom) {
this._parseModulesByDom($(dom));
},
_parseModulesByDom:function (dom) {
$(moduleSelector, dom).each(function (index, el) {
var name = $(el).attr(moduleNameProp);
seajs.use(name, function (mo) {
if (Stage.modules[name]) return;
var tmp = new mo({rootNode:$(el), key:$(el).attr('id')});
//To registration message center for the instance
mcenter.subscribe(tmp);
tmp.on('DOMLOADED', Stage._onModuleDomLoadedHandler);
Stage.modules[name] = tmp;
});
});
},
_onModuleDomLoadedHandler:function (mod) {
seajs.log(mod.__cid__ + " module's dom has loaded.");
if (mod) {
//Potential problem : deepCopy problem
Stage._parseModulesByDom(mod.rootNode);
}
}
};
window.Stage = Stage;
return Stage;
});