样例一:
- <html>
- <head>
- <Metacharset="UTF-8">
- <linkrel="stylesheet"href="dijit/themes/soria/soria.css">
- <scripttype="text/javascript"src="dojo/dojo.js"djConfig="parSEOnLoad:true"></script>
- <title>CustomWidget</title>
- <scripttype="text/javascript">
- require([
- "dojo/_base/declare","dijit/_WidgetBase","dijit/_TemplatedMixin","dojo/dom-construct","dojo/parser","dojo/domReady!"
- ],function(declare,_WidgetBase,_TemplatedMixin,domConstruct){
- //创建DOM节点小部件
- declare("Counter",[_WidgetBase],{
- //计数器
- _i:1,buildRendering:function(){
- //创建该小部件的DOM树
- this.domNode=domConstruct.create("button",{
- innerHTML:this._i
- });
- },//postCreate函数依赖进行事件连接this.connect或this.disconnect
- postCreate:function(){
- //用户每点击一次按钮,计数器增加1
- this.connect(this.domNode,"onclick","increment");
- },increment:function(){
- this.domNode.innerHTML=++this._i;
- }
- });
- //模板化小部件
- declare("CounterText",[_WidgetBase,_TemplatedMixin],{
- //计数器
- _i:0,templateString:"<div>"+"<buttondojoAttachEvent='onclick:increment'>增加计数</button>"+" 当前计数:<spandojoAttachPoint='counter'>0</span>"+"</div>",increment:function(){
- this.counter.innerHTML=++this._i;
- }
- });
- });
- </script>
- </head>
- <bodyclass="soria">
- <spandojoType="Counter"></span>
- <br>
- <spandojoType="CounterText"></span>
- </body>
- </html>
输出结果:
--采用attributeMap将小部件的属性映射为DOM节点的属性、innerHTML或类:
- <html>
- <head>
- <title>BusinessCard</title>
- <styletype="text/css">
- body,html{margin:0;height:100%;width:100%;}
- .businessCard{border:3pxinsetgray;margin:1em;}
- .employeeName{color:blue;}
- .specialEmployeeName{color:red;}
- </style>
- <linkrel="stylesheet"href="dijit/themes/tundra/tundra.css">
- <scripttype="text/javascript"src="dojo/dojo.js"djConfig="parSEOnLoad:true"></script>
- <scripttype="text/javascript">
- require([
- "dojo/_base/declare",_TemplatedMixin){
- declare("BusinessCard",{
- //初始化参数,设置默认属性值
- name:"unknown",nameClass:"employeeName",phone:"unknown",//模板文件
- templateString:"<divclass='businessCard'>"+"<div>姓名:<spandojoAttachPoint='nameNode'></span></div>"+"<div>电话#:<spandojoAttachPoint='phoneNode'></span></div>"+"</div>",//将小部件的属性映射为DOM节点的属性、innerHTML或类
- attributeMap:{
- name:{
- node:"nameNode",type:"innerHTML"
- },nameClass:{
- node:"nameNode",type:"class"
- },phone:{
- node:"phoneNode",type:"innerHTML"
- }
- }
- });
- });
- </script>
- </head>
- <bodyclass="tundra">
- <spandojoType="BusinessCard"name="陈德选"phone="(010)63981212">
- </span>
- <spandojoType="BusinessCard"name="刘泊芸"nameClass="specialEmployeeName"phone="(010)63967113">
- </span>
- </body>
- </html>
输出: