dojo中创建widget方式小结
来源:互联网 发布:喜欢英国的理由 知乎 编辑:程序博客网 时间:2024/05/17 08:24
dojo中创建widget的方式总的来说有两种:声明式创建widget、编程式创建widget。编程式创建widget根据srcNode又可分为三种:静态srcNode、动态srcNode、无srcNode。
1. 声明式创建widget,通过在宿主节点上设置dojoType="widgetName"来实现,代码如下所示:
<html><head><title>声明式的widget</title><style type="text/css">@import "http://serverapi.arcgisonline.com/jsapi/arcgis/1.5/js/dojo/dijit/themes/tundra/tundra.css";</style><script type="text/javascript">var djConfig={parseOnLoad:true};</script><script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.5"></script><script type="text/javascript">dojo.require("dojo.parser");dojo.require("dijit._Widget");dojo.declare("Counter",[dijit._Widget],{_i:0,buildRendering:function(){this.domNode=dojo.create("button",{innerHTML:this._i});},postCreate:function(){this.connect(this.domNode,"onclick","increment");//不能写成onClick,dijit._Widget具有connect方法},increment:function(){this.domNode.innerHTML = ++this._i;}});</script></head><body><span dojoType="Counter"></span><!--此处的span只是为了能够对Counter进行定位,没有其他的作用,把span换成a也可以。在Firefox中调试increment可知,this.domNode是button节点,而不是此处的替代层span。--></body></html>
2.使用静态的scrNode供编程式的widget定位使用,代码如下所示:
<html><head><title>使用静态的scrNode供编程式的widget定位使用</title><style type="text/css">@import "http://serverapi.arcgisonline.com/jsapi/arcgis/1.5/js/dojo/dijit/themes/tundra/tundra.css";</style><script type="text/javascript">var djConfig={parseOnLoad:true};</script><script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.5"></script><script type="text/javascript">dojo.require("dojo.parser");dojo.require("dijit._Widget");dojo.declare("Counter",[dijit._Widget],{_i:0,buildRendering:function(){this.domNode=dojo.create("button",{innerHTML:this._i});},postCreate:function(){this.connect(this.domNode,"onclick","increment");//不能写成onClick,dijit._Widget具有connect方法},increment:function(){this.domNode.innerHTML = ++this._i;}});dojo.addOnLoad(function(){var srcNode = dojo.byId("srcNodeId");var counterWidget = new Counter({},srcNode);// new WidgetName({widget属性散列},srcNode}});</script></head><body><span id="srcNodeId"></span><!--此处的span只是为了能够对Counter进行定位,没有其他的作用,把span换成a也可以。在Firefox中调试increment可知,this.domNode是button节点,而不是此处的替代层span。--></body></html>
3.动态创建scrNode供编程式的widget定位使用,代码如下所示:
<html><head><title>动态创建scrNode供编程式的widget定位使用</title><style type="text/css">@import "http://serverapi.arcgisonline.com/jsapi/arcgis/1.5/js/dojo/dijit/themes/tundra/tundra.css";</style><script type="text/javascript">var djConfig={parseOnLoad:true};</script><script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.5"></script><script type="text/javascript">dojo.require("dojo.parser");dojo.require("dijit._Widget");dojo.declare("Counter",[dijit._Widget],{_i:0,buildRendering:function(){this.domNode=dojo.create("button",{innerHTML:this._i});},postCreate:function(){this.connect(this.domNode,"onclick","increment");//不能写成onClick,dijit._Widget具有connect方法},increment:function(){this.domNode.innerHTML = ++this._i;}});dojo.addOnLoad(function(){var srcNode = dojo.create("span");//dojo.create("elementTagName",{DOM属性散列})dojo.body().appendChild(srcNode);var counterWidget = new Counter({},srcNode);// new WidgetName({widget属性散列},srcNode}/*此处动态创建的span只是为了能够对Counter进行定位,没有其他的作用,把span换成a也可以。在Firefox中调试increment可知,this.domNode是button节点,而不是此处的替代层span*/});</script></head><body></body></html>
4.编程式创建widget,不设置小部件的srcNode,代码如下所示:
<html><head><title>编程式创建widget,不设置小部件的srcNode</title><style type="text/css">@import "http://serverapi.arcgisonline.com/jsapi/arcgis/1.5/js/dojo/dijit/themes/tundra/tundra.css";</style><script type="text/javascript">var djConfig={parseOnLoad:true};</script><script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.5"></script><script type="text/javascript">dojo.require("dojo.parser");dojo.require("dijit._Widget");dojo.declare("Counter",[dijit._Widget],{_i:0,buildRendering:function(){this.domNode=dojo.create("button",{innerHTML:this._i});},postCreate:function(){this.connect(this.domNode,"onclick","increment");//不能写成onClick,dijit._Widget具有connect方法},increment:function(){this.domNode.innerHTML = ++this._i;}});dojo.addOnLoad(function(){var counterWidget = new Counter({});// new WidgetName({widget属性散列},srcNode}counterWidget.placeAt(dojo.body());//placeAt是dijit._Widget中的函数,将创建的widget放到了body中,而且没有使用srcNode});</script></head><body></body></html>
以上前三种都是用了srcNode进行定位,需要特别注意的是,srcNode仅仅是用来进行对widget进行定位,千万不要将widget.domNode与srcNode等价起来,二者不同,widget.domNode是widget自身的dom节点,而srcNode只是相当于widget的占位符。但也并不是所有的小部件都必须创建“替代层”。一些小部件,其在页面中的位置对其功能没有任何影响。例如dijit.Tooltip、dijit.TooltipDialog与dijit.Dialog等。因为这类型的小部件的显示位置与其在DOM结构中的相对位置没有必然的关系,因此在一般情况下,Dojo会默认把这些小部件插入到页面DOM结构最后面的位置。
- dojo中创建widget方式小结
- 快速创建 Dojo Widget
- Dojo 1.6 官方教程: 创建自定义Dojo小部件(Widget)
- 删除dojo创建的widget:以删除enhancedgrid为例
- 控制器中view的创建方式小结
- Dojo Widget 中DOM事件的初始化和销毁
- Dojo Widget中变量的奇怪作用域
- Add dojo widget programmatically
- 学习Ajax框架之dojo:dojo widget
- Dojo 1.6 官方教程翻译:创建基于模板的小部件(Widget)
- Dojo 1.6 官方教程翻译:创建基于模板的小部件(Widget)
- dojo widget的实例化
- Yii中创建自己的Widget.
- Yii中创建自己的Widget.
- 创建Widget
- DOJO组件生命周期(the life cycle of dojo widget)
- DOJO组件生命周期(the life cycle of dojo widget)
- DOJO组件生命周期(the life cycle of dojo widget)
- ubuntu下解决由于错误配置分辨率导致黑屏问题
- WM_NOTIFY
- GB,GBC,GBA游戏模拟器移植心得
- javaScript获取HTML DOM节点元素的方
- MySQL 按指定字段自定义列表排序
- dojo中创建widget方式小结
- 通过电子邮件实施的APT攻击
- Android项目报错误信息Error generating final archive: Debug Certificate expired on 某个时间
- OpenNI学习手册翻译一
- 子类抛出的异常类型不能比父类抛出的异常类型更宽泛!
- 工舞作倾
- JNI中jstring 和char* 之间的转换方法
- 笔试题13:采用UDP协议,编写一个简单发送字符串的程序(源码)
- Hadoop集群间distcp方案探讨