一:index.jsp页面中的<mx:WebletContainer id="ownerContainer" webletID="owner" bundleName="plan"></mx:WebletContainer>标签解析为如下JavaScript代码
①var consunitEmployeeContainer = new mx.weblets.WebletContainer({ $e: $("#consunitEmployeeContainer"), webletID:"consunitEmployee", bundleName: "plan"});
②创建WebletContainer对象时自动调用me.endOfClass(arguments);
③根据继承关系mx.weblets.WebletContainer->mx.views.ViewPort->mx.containers.Container->mx.controls.Control->MXComponent->MXObject
调用MXObject对象中的endOfClass方法
** 每个定义的类(组件)最后几乎都会自动调用me.endOfClass(arguments);
该函数主要作用为初始化参数,该方法最终是依次调用MXObject和MXComponent中的me._(p_options),
然后依次按继承关系调用各类中的me.init(从当前调用对象所属类->MXObject中的me.init());
方法一:me.endOfClass = function(p_arguments)
{
if (me.__class__.caller != $extend)
{
me._(p_arguments[0]);
}
return me;
};
me._(p_arguments[0])调用MXComponent中的me._方法
方法二:me._ = function(p_options)
{
if (me.canConstruct())
{
// 此处先调用父类MXObject的_()方法,即方法三
base._(p_options);
//...此处省略AOP方法
if (me.autoInit)
{
me.init();// 此处会根据继承关系分别调用WebletContainer、ViewPort、Container、Control、MXComponent中的me.init方法
}
}
};
父类MXObject中的me._方法,主要重要是初始化变量$e、webletID、bundleName的值
方法三:me._ = function(p_options)
{
if (me.canConstruct())
{
if ($.isPlainObject(p_options))
{
var isEventDispatcher = typeof (me.on) == "function";
for ( var key in p_options)
{
var option = p_options[key];
// 如果是onXXX之类的方法(onload/onstart/onclick),则调用MXComponent.on方法用于创建MXEvent事件,并添加事件监听
// 具体参见方法十六
if (isEventDispatcher && typeof (me[key]) == "object"
&& typeof (option) == "function"
&& key.startsWith("on"))
{
me.on(key.substr(2), option);
}
else
{
me[key] = option;
}
option = null;
p_options[key] = null;
delete p_options[key];
}
}
me.constructed = true;
p_options = null;
}
};
方法四:WebletContainer中的me.init方法[47-72]
me.init = function()
{
me.$e.addClass("webletContainer");//添加class样式webletContainer
me.$e.empty();
sguap框架-weblet执行流程
最新推荐文章于 2020-06-25 22:01:50 发布
本文详细探讨了SGUAP框架中Weblet的执行流程,从请求接收、页面跳转到业务处理,深入分析了每个阶段的关键步骤和技术要点,帮助读者理解该框架的工作机制。
摘要由CSDN通过智能技术生成