日期:2014-05-16 浏览次数:20439 次
/**
* ui控件渲染
* 参数:dom 占位符
* callBack 回调函数
*/
function render(dom, callBack){
if(typeof dom == "undefined") return;
//读取传入的dom参数的所有子元素
var len = dom.childNodes.length;
for(var i = 0; i < len; i++) {
//循环对各个dom子元素处理
var curDom = dom.childNodes[i];
//获取子元素的子元素数组
var childDom = curDom.childNodes;
//获取当前元素的id或name用于作控件的变量名,
var comName = curDom.id || curDom.name;
//如果重复就不渲染
if(comName !== "" && typeof comName != "undefined" && comName != null) {
if(typeof thisWindow.com[comName] === "undefined") {
//读取元素的code属性
var code = curDom.attributes.code;
if(typeof code != "undefined") {
var code = code.nodeValue;
//把code属性转换成类对象
var comClass = eval(code);
if(typeof comClass != "undefined") {
//如果有对应的类对象,则再读取option属性
var option = curDom.attributes.option;
if(typeof option != "undefined") {
option = eval("(" + option.nodeValue + ")");
}
try {
//跟据code对应的ui控件对象,
var ui = new comClass(option, curDom, true);
//加入到com列表中,
thisWindow.com[curDom.id || curDom.name] = ui;
//返回当前容器,用于继续渲染子元素控件
curDom = ui.getRectDom();
} catch(e) {
//控件渲染错误时日志输出。
thisWindow.LogInfo("create class " + code
+ " error:" + e.message);
}
} else {
//控件不存在时输出日志
thisWindow.LogInfo("class " + code + " can not found.");
}
}
} else {
//如果id重复,提示,输出日志
thisWindow.LogInfo(comName + " is exist");
}
}
if(childDom.length > 0 && curDom != null && typeof curDom != "undefined") {
//如果还有子元素,则继续渲染
render(curDom);
}
}
if(typeof callBack == "function") {
callBack();
}
};
//第一次默认渲染body对象下的控件
render(document.body, function(){
if(typeof thisWindow.onAfterRender == "function") {
//渲染后事件
thisWindow.onAfterRender();
}
});
staticScript = [
"../css/com.comStyle.css",
"extend.js",
"render.js"
]
function nameSpace(){
var arg = arguments, obj = null, i, j, arr, ns;
// 保存当前的nameSpace
for (i = 0; i < arg.length; i++){
// 以"."分割字符串
arr = arg[i].split(".");
// 取出第一节点对象
ns = arr[0];
// 判断是否存在ns字符串对应的对象,若不存在则进行初始化成原始对象{}
if(window[ns] === undefined){
window[ns] = {};
}
obj = window[ns];
// 循环判读对象已存在,如果未存在,则初始化成原始对象{}
for (j = 1; j < arr.length; j++){
if(obj[arr[j]] === undefined){
obj[arr[j]] = {};
}
obj = obj[arr[j]];
}
}
return obj;
}
staticScript = [
"../css/com.comStyle.css",
"extend.js",
"nameSpace.js",
"render.js"
]