`
bellstar
  • 浏览: 150630 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SUI-如何编写渲染适配器及Ext适配器范例

    博客分类:
  • SUI
阅读更多
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说明书及测量值读取程序.zip

    《SUI-101A说明书及测量值读取程序》是针对一款名为SUI-101A的设备的详细指南,包含了该设备的接线、使用以及测量值读取的相关知识。在这个压缩包中,用户可以找到必要的文档和程序,以便更好地理解和操作SUI-101A。...

    SUI-101A资料(内含SUI-101A使用说明书、单片机读取SUI-101A例程、Modbus读写测试、外挂互感器接线说明)

    《SUI-101A全面解析:从基础到实践》 SUI-101A是一款集成度高、功能强大的智能传感器模块,广泛应用于工业自动化、物联网以及智能家居等领域。这款设备的核心在于其与单片机的高效交互,以及通过Modbus协议实现的...

    电流互感器SUI-101A说明书以及STM32/C51测量值读取程序

    "电流互感器SUI-101A说明书及测量值读取程序"的压缩包文件中,很可能是包含了SUI-101A的详细技术规格、安装指南、接线图等信息,这些都是正确使用和维护电流互感器所必需的。此外,读取程序部分可能包含STM32和C51的...

    SUI-101A交流变送器模块资源

    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说明书及测量值读取程序.rar_SUI-101A_sui 101a_测量值读取程序_电流 测量_电流互

    SUI-101A型号的电流互感器是一款专为电气工程设计的专业设备,用于准确地检测和传输交流电流信号。在本文件压缩包中,我们将会深入探讨SUI-101A的使用方法、工作原理以及测量值的读取程序。 首先,SUI-101A的说明书...

    基于STM32的SUI-101A测量值读取程序

    在本项目"基于STM32的SUI-101A测量值读取程序"中,我们关注的是如何利用STM32F103RCT6型号的MCU来读取SUI-101A传感器模块提供的测量数据,包括交流电的电压、电流和有功功率。 首先,STM32F103RCT6是STM32系列的一...

    无线信道建模原理及SUI-3信道的MATlab仿真.pdf

    本文将深入探讨无线信道建模的基本原理,特别是SUI-3信道的MATLAB仿真。 无线信道的特征主要包括多径传播、移动台速度、物体运动以及信号带宽等因素。在无线传播过程中,信号会受到多种因素的影响,导致信号质量...

    JavaScript 项目-vue-sui-demo.zip

    在这个名为“vue-sui-demo”的项目中,开发者使用了Vue.js结合SUI-Mobile来创建一个适用于移动端的示例应用。SUI-Mobile是一款基于Flexbox的移动端UI库,它提供了丰富的组件和样式,帮助开发者快速构建响应式的移动...

    SUI-Mobile组件库 city-picker.js

    SUI-Mobile组件库 city-picker.js SUI-Mobile组件库 city-picker.js

    sui-3的信道仿真

    matlab写的sui-3的信道仿真,802.16推荐下的仿真代码

    sui-button:组件的概要草稿

    本文将深入探讨一个名为“sui-button”的组件,该组件以其高度可定制性和易用性为特点,成为JavaScript开发中的热门选择。我们将从组件的概要设计、实现原理以及实际应用等多个角度进行详细解析。 首先,我们要理解...

    sui-theme:基本主题,包含一组用于初始化默认值的通用变量

    将sui-theme导入到您的sui-component中,包括index.scss的路径: @import ' ~@s-ui/theme/lib/index ' ; 如果您想自定义您的组件,创建自己的主题,它只是隋主题导入前添加到您的组件。 @import ' ../custom-...

    SUI-JI-GONG-ZHENG.rar

    本压缩包“SUI-JI-GONG-ZHENG.rar”包含的是关于随机共振的源代码,对于理解该技术的实现原理以及进行相关项目开发具有一定的参考价值。 随机共振的概念源于1960年代,最初是在研究非线性系统对微弱信号响应时提出...

    matlab开发-JavaScript 项目-vue-sui-demo.zip

    标题 "matlab开发-JavaScript 项目-vue-sui-demo.zip" 暗示这是一个结合了MATLAB和JavaScript技术的项目,具体来说是基于Vue.js框架和SUI Mobile UI库的示例应用。这个压缩包可能包含了一个完整的前端项目结构,用于...

    sui-mobile路由加载js,css问题的解决方案

    本文将针对"Sui-Mobile路由加载js,css问题的解决方案"进行详细的探讨。 首先,理解SUI Mobile的路由机制是解决问题的关键。SUI Mobile 并不是一个完整的前端框架,它不包含内置的路由管理功能。通常,开发者会结合...

    sui-components:sui组件发布库

    sui-componentssui 组件库在线文档使用yarn add sui-components示例// libimport { Wrapper, Logo, Menu, RouterPage, Avatar} from 'sui-components';const { PageWrapper, LeftWrapper, RightWrapper, Header, ...

    本系统方案主要采用STM32 F407单片机作为系统主控,通过串口同SUI-101A电能计量模块进行通讯,获取有功功率、电压、电

    本系统方案主要采用STM32 F407单片机作为系统主控,通过串口同SUI-101A电能计量模块进行通讯,获取有功功率、电压、电流等电参数,并通过这些参数进行用电器识别功能。其中SUI-101A模块通过电流互感器接入插座,监测...

    sui-mobile-1.1.0.rar

    测试框架的小例子,可以用于参考和使用,内容是博客文档附加代码。

    SUI-Mobie—dev

    [SUI Mobile](http://m.sui.taobao.org/) 是阿里巴巴国际UED前端团队出品的移动端 __UI库__。 没有重复造轮子。主要借鉴 __Framework7__ 的形态并以此为基础,参考Ratchet、Ionic、Onsen各种不同的思路,强化功能,...

    无线信道建模原理及SUI-3信道的MATlab仿真 (2).pdf

    6. **仿真模型**:在MATLAB中,可以建立无线信道的仿真模型,例如SUI-3信道模型,它是一种常用的衰落信道模型,考虑了多种传播条件和环境因素。通过这种模型,可以分析不同参数设置对通信系统性能的影响,如误码率...

Global site tag (gtag.js) - Google Analytics