function makeExtConfig(renderOption,renderConfig){
var extConfig = {};
for(var p in renderOption.properties){
extConfig[p] = renderOption.properties[p];
}
var haslistener = false;
for(var eventName in renderOption.listeners){
haslistener = true;
break;
}
if(haslistener){
extConfig.listeners = {};
for(var eventName in renderOption.listeners){
extConfig.listeners[eventName] = (function(jscode){
return function(){
eval(jscode);
}
})(renderOption.listeners[eventName]);
}
}
delete extConfig.iscontainer;
return extConfig;
}
function Ext_v2_1_adapter(adapterOption){
adapterOption.render = function(renderOption,elRenderTo,parent){
var extConfig = makeExtConfig(renderOption,adapterOption);
var cmp = {};
if(parent.object && parent.object instanceof Ext.Component){
extConfig.renderTo = parent.object.body.dom;
var component = parent.object.add(extConfig);
cmp.addedToParent = true;
}else if(parent.add){ //父对象是其他UI容器组件(非Ext)
var component = new Ext.ComponentMgr.create(extConfig);
component.render(elRenderTo.temp);
cmp.nodes = elRenderTo.temp.childNodes;
cmp.addedToParent = false; //由父对象自己负责怎样加入Ext组件
}else{//父对象是HTML元素节点
if(elRenderTo.sui.getAttribute("sui")!=null){//声明节点是默认命名空间的节点
extConfig.renderTo = elRenderTo.sui;
elRenderTo.sui.id = "";
}else{
extConfig.renderTo = elRenderTo.parent;
}
var component = new Ext.ComponentMgr.create(extConfig);
cmp.addedToParent = true;
}
cmp.isContainer = component instanceof Ext.Container;
cmp.object = component;
if(cmp.isContainer){
cmp.body = component.body.dom;
cmp.add = function(mixObj){
if(mixObj.object instanceof Ext.Component){
if(mixObj.object.ownerCt && mixObj.object.ownerCt != component)return;
return component.add(mixObj.object);
}else if(mixObj.nodes){
for(var i=0,l=mixObj.nodes.length; i<l;i++){
cmp.body.appendChild(mixObj.nodes[0]);
}
}else{
cmp.body.appendChild(mixObj);
}
};
}
return cmp;
}
SUI.Render.call(this,adapterOption);
}
Ext_v2_1_adapter.prototype = new SUI.Render;
在以上代码中Ext_v2_1_adapter继承了SUI.Render基类,它根据SUI传递过来的renderOption创建Ext Component,并依据渲染目标父节点的不同情况渲染节点或者让父节点渲染它,然后返回一个临时对象,该对象实现了SUI的component接口
----------------
SUI.IComponent
----------------
isContainer 组件是否为容器
object 组件对应的实例对象
addedToParent 组件是否已经添加到父节点
----------------
-----------------------
SUI.IContainerComponent
-----------------------
isContainer
object
addedToParent
add 实现如何添加子对象
body 指明容器对象真正容纳子节点的Dom节点
-----------------------
如果有以下节点(html文件中)和如下配置(config.xml中)
<ui:panel id="p2" style='visibility:visible;' title="小面板" width="300" collapsible="true" oncollapse="pnl2_collapse(this)">
<panel iscontainer="true">
<render name="Ext" version="2.1" src="org.ext.sui-adapter:Ext_v2_1_adapter" selected="true" browser="IE|Opera|Gecko" >
<property xtype="panel" ></property>
</render>
</panel>
那么SUI传递给适配器的render方法的renderOption参数在firebug里显示为:
listeners
collapse "pnl2_collapse(this)"
properties
collapsible true
id "p2"
iscontainer "true"
style "visibility: visible;"
title "小面板"
width 300
xtype "panel"
经makeExtConfig转换后就得到了实例化Ext Component所需要的Option对象
listeners
collapse function()
collapsible true
id "p2"
style "visibility: visible;"
title "小面板"
width 300
xtype "panel"
分享到:
相关推荐
《SUI-101A全面解析:从基础到实践》 SUI-101A是一款集成度高、功能强大的智能传感器模块,广泛应用于工业自动化、物联网以及智能家居等领域。这款设备的核心在于其与单片机的高效交互,以及通过Modbus协议实现的...
《SUI-101A说明书及测量值读取程序》是针对一款名为SUI-101A的设备的详细指南,包含了该设备的接线、使用以及测量值读取的相关知识。在这个压缩包中,用户可以找到必要的文档和程序,以便更好地理解和操作SUI-101A。...
"电流互感器SUI-101A说明书及测量值读取程序"的压缩包文件中,很可能是包含了SUI-101A的详细技术规格、安装指南、接线图等信息,这些都是正确使用和维护电流互感器所必需的。此外,读取程序部分可能包含STM32和C51的...
SUI-101A交流变送器模块资源 有以下资源 1、SUI-101A使用说明书2023/7/6 18:46文件夹 2、单片机读取SUI-101A测量值例程文件夹2023/7/6 18:46 3、电脑Modbus读写测试文件夹2023/7/6 18:46 4、外挂互感器接线说明(15A...
本文档旨在全面解读SUI-101A电流互感器的使用说明及测量值读取程序,旨在帮助运维人员更好地理解和操作此设备。 首先,SUI-101A电流互感器说明书为用户提供了操作设备的关键信息,其中包含了技术参数介绍,这对于...
在本项目"基于STM32的SUI-101A测量值读取程序"中,我们关注的是如何利用STM32F103RCT6型号的MCU来读取SUI-101A传感器模块提供的测量数据,包括交流电的电压、电流和有功功率。 首先,STM32F103RCT6是STM32系列的一...
本文将深入探讨无线信道建模的基本原理,特别是SUI-3信道的MATLAB仿真。 无线信道的特征主要包括多径传播、移动台速度、物体运动以及信号带宽等因素。在无线传播过程中,信号会受到多种因素的影响,导致信号质量...
在这个名为“vue-sui-demo”的项目中,开发者使用了Vue.js结合SUI-Mobile来创建一个适用于移动端的示例应用。SUI-Mobile是一款基于Flexbox的移动端UI库,它提供了丰富的组件和样式,帮助开发者快速构建响应式的移动...
SUI-Mobile组件库 city-picker.js SUI-Mobile组件库 city-picker.js
(2016-07-11)Vue 量很轻,易定制,比较适合移动端,很喜欢 Vue 写组件的方式,全部用VUE和SUI-Mobile写了一个移动端 demo,用来反馈 vue 的学习效果(取消了 SUI 自带的路由) ,使用Vue-router)的节点 v5.12.0...
matlab写的sui-3的信道仿真,802.16推荐下的仿真代码
本文将深入探讨一个名为“sui-button”的组件,该组件以其高度可定制性和易用性为特点,成为JavaScript开发中的热门选择。我们将从组件的概要设计、实现原理以及实际应用等多个角度进行详细解析。 首先,我们要理解...
将sui-theme导入到您的sui-component中,包括index.scss的路径: @import ' ~@s-ui/theme/lib/index ' ; 如果您想自定义您的组件,创建自己的主题,它只是隋主题导入前添加到您的组件。 @import ' ../custom-...
本压缩包“SUI-JI-GONG-ZHENG.rar”包含的是关于随机共振的源代码,对于理解该技术的实现原理以及进行相关项目开发具有一定的参考价值。 随机共振的概念源于1960年代,最初是在研究非线性系统对微弱信号响应时提出...
标题 "matlab开发-JavaScript 项目-vue-sui-demo.zip" 暗示这是一个结合了MATLAB和JavaScript技术的项目,具体来说是基于Vue.js框架和SUI Mobile UI库的示例应用。这个压缩包可能包含了一个完整的前端项目结构,用于...
本文将针对"Sui-Mobile路由加载js,css问题的解决方案"进行详细的探讨。 首先,理解SUI Mobile的路由机制是解决问题的关键。SUI Mobile 并不是一个完整的前端框架,它不包含内置的路由管理功能。通常,开发者会结合...
sui-componentssui 组件库在线文档使用yarn add sui-components示例// libimport { Wrapper, Logo, Menu, RouterPage, Avatar} from 'sui-components';const { PageWrapper, LeftWrapper, RightWrapper, Header, ...
本系统方案主要采用STM32 F407单片机作为系统主控,通过串口同SUI-101A电能计量模块进行通讯,获取有功功率、电压、电流等电参数,并通过这些参数进行用电器识别功能。其中SUI-101A模块通过电流互感器接入插座,监测...
测试框架的小例子,可以用于参考和使用,内容是博客文档附加代码。
SUI-Mobile-dev 文件夹很可能是项目的开发版本,包含了源码、文档、示例等资源,便于开发者进行定制和扩展。在这里,你可以找到SUI Mobile的CSS和JS源文件,以及相关的开发工具,如Grunt或Gulp,用于自动化构建和...