简述
本文只讨论利用JS创建Dorado的控件对象,对于HTML中的Table,Div,P等DOM对象的创建这中基础知识不在本文讨论范围内。如果你想了解建议去实际了解一下HTML的基础知识。
推荐文章:http://www.w3school.com.cn/xmldom/met_document_createelement.asp
另外在Dorado7中对于DOM的创建专门提供了$DomUtils的xCreate方法帮助你简化代码,详情请查看Client-API中的dorado.util.Dom中的xCreate方法,尤其注意其中几个范例的编写。
基本方法
基本方式请阅读:基础教程中的<<03. 创建Dorado对象>>
参考代码:
new dorado.widget.Button({
caption: "Test",
icon: "xxxx",
onClick: function() {
alert("AAAAAAAAAAAAA");
}
})
支持那些属性和事件看jsdoc.
技巧
技巧一:如何通过API文档确定构造函数中JSON对象可以声明那些属性和事件
- 简单属性
以Button为例:

查看Client-API我们可以知晓对应控件的attributes有哪些属性,之后就可以在构造函数中设定这个属性,如:
new dorado.widget.Button({
caption: "Test",
showTrigger: true,
disabled: false,
icon: "xxx.gif",
iconClass: "myicon",
onClick: function() {
alert("AAAAAAAAAAAAA");
}
})
- 事件
如上例的onClick事件,我们可以通过Client-API查看事件列表:

并根据需要定义事件,如:
new dorado.widget.Button({
caption: "Test",
onClick: function(self, arg) {
alert("onClick");
},
onReady: function(self, arg) {
alert("onReady");
}
})
- 复杂属性

var label1 = new dorado.widget.Label({
text:"测试1",
width:100
});
var label2 = new dorado.widget.Label({
text:"测试2",
width:100
});
var autoForm = new dorado.widget.AutoForm({
width:600,
height:400,
elements:[label1, label2]
});
然而如果控件较为复杂,如子控件对象较多,通过new方法反复创建控件对象较为繁琐,则我们可以利用$type机制实现,如上范例可以改造为:
var autoForm = new dorado.widget.AutoForm({
width:600,
height:400,
elements:[{
$type:"Label",
text:"测试1",
width:100
}, {
$type:"Label",
text:"测试2",
width:100
}]
});
技巧二:如何知道$type的值
在上面的范例中我们用到了$type,那么在实际开发中我们如何知道一个控件的$type的值呢?
在Dorado的Client-API中,我们可以看到如下的$type的说明:

如Dialog的$type为Dialog,则可以通过如下的方式创建Dialog:
{
$type:"Dialog",
center:true,
height:"300",
width:"400",
modal:true,
caption":"员工信息编辑",
modalType:"dark"
}
技巧三:如何快速的构建一个JSON对象
通过手工编写JS代码创建一个控件的过程较为繁琐,下面给大家介绍一个技巧:如何利用IDE生成JSON对象。
如我们希望创建一个FieldSet控件,并且包含多个子控件,效果如下图:
则我建议你可以在IDE中预先创建一个View,并设计好这个界面,如:

之后在浏览器中查看这个页面,并在浏览器中右键单击查看源代码:

查看源代码:

注意其中红色边框的部分,我们将这个部分拷贝出来(它就是我们需要的JSON对象),将这部分代码作为控件构造的JSON参数的值,并删除$type的定义,如下:
var fieldSet = new dorado.widget.FieldSet(
{
"children":[
{
"$type":"FormElement",
"height":"36",
"label":"\u5C5E\u6027\u4E00"
},
{
"$type":"FormElement",
"height":"36",
"label":"\u5C5E\u6027\u4E8C"
},
{
"$type":"FormElement",
"height":"36",
"label":"\u5C5E\u6027\u4E09"
},
{
"$type":"FormElement",
"height":"36",
"label":"\u5C5E\u6027\u56DB"
}
],
"height":"170",
"width":"200",
"caption":"FieldSet",
"layoutConstraint":{
"left":"50"
}
}
);
用相同的方式,你还可以直接在IDE中定义相关控件的事件,然后在查看源代码拷贝就可以。

