Dojo自定义小部件样例

前端之家收集整理的这篇文章主要介绍了Dojo自定义小部件样例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

样例一:

  1. <html>
  2. <head>
  3. <Metacharset="UTF-8">
  4. <linkrel="stylesheet"href="dijit/themes/soria/soria.css">
  5. <scripttype="text/javascript"src="dojo/dojo.js"djConfig="parSEOnLoad:true"></script>
  6. <title>CustomWidget</title>
  7. <scripttype="text/javascript">
  8. require([
  9. "dojo/_base/declare","dijit/_WidgetBase","dijit/_TemplatedMixin","dojo/dom-construct","dojo/parser","dojo/domReady!"
  10. ],function(declare,_WidgetBase,_TemplatedMixin,domConstruct){
  11. //创建DOM节点小部件
  12. declare("Counter",[_WidgetBase],{
  13. //计数器
  14. _i:1,buildRendering:function(){
  15. //创建该小部件的DOM树
  16. this.domNode=domConstruct.create("button",{
  17. innerHTML:this._i
  18. });
  19. },//postCreate函数依赖进行事件连接this.connect或this.disconnect
  20. postCreate:function(){
  21. //用户每点击一次按钮,计数器增加1
  22. this.connect(this.domNode,"onclick","increment");
  23. },increment:function(){
  24. this.domNode.innerHTML=++this._i;
  25. }
  26. });
  27. //模板化小部件
  28. declare("CounterText",[_WidgetBase,_TemplatedMixin],{
  29. //计数器
  30. _i:0,templateString:"<div>"+"<buttondojoAttachEvent='onclick:increment'>增加计数</button>"+"&nbsp;当前计数:<spandojoAttachPoint='counter'>0</span>"+"</div>",increment:function(){
  31. this.counter.innerHTML=++this._i;
  32. }
  33. });
  34. });
  35. </script>
  36. </head>
  37. <bodyclass="soria">
  38. <spandojoType="Counter"></span>
  39. <br>
  40. <spandojoType="CounterText"></span>
  41. </body>
  42. </html>

输出结果:

wKiom1Rl7HjyGO5aAAAbSRd0U8Q174.jpg

--采用attributeMap将小部件的属性映射为DOM节点的属性、innerHTML或类:

  1. <html>
  2. <head>
  3. <title>BusinessCard</title>
  4. <styletype="text/css">
  5. body,html{margin:0;height:100%;width:100%;}
  6. .businessCard{border:3pxinsetgray;margin:1em;}
  7. .employeeName{color:blue;}
  8. .specialEmployeeName{color:red;}
  9. </style>
  10. <linkrel="stylesheet"href="dijit/themes/tundra/tundra.css">
  11. <scripttype="text/javascript"src="dojo/dojo.js"djConfig="parSEOnLoad:true"></script>
  12. <scripttype="text/javascript">
  13. require([
  14. "dojo/_base/declare",_TemplatedMixin){
  15. declare("BusinessCard",{
  16. //初始化参数,设置默认属性
  17. name:"unknown",nameClass:"employeeName",phone:"unknown",//模板文件
  18. templateString:"<divclass='businessCard'>"+"<div>姓名:<spandojoAttachPoint='nameNode'></span></div>"+"<div>电话#:<spandojoAttachPoint='phoneNode'></span></div>"+"</div>",//将小部件的属性映射为DOM节点的属性、innerHTML或类
  19. attributeMap:{
  20. name:{
  21. node:"nameNode",type:"innerHTML"
  22. },nameClass:{
  23. node:"nameNode",type:"class"
  24. },phone:{
  25. node:"phoneNode",type:"innerHTML"
  26. }
  27. }
  28. });
  29. });
  30. </script>
  31. </head>
  32. <bodyclass="tundra">
  33. <spandojoType="BusinessCard"name="陈德选"phone="(010)63981212">
  34. </span>
  35. <spandojoType="BusinessCard"name="刘泊芸"nameClass="specialEmployeeName"phone="(010)63967113">
  36. </span>
  37. </body>
  38. </html>

输出

wKiom1Rl8NaDorY1AABaPd2jZTU161.jpg

猜你在找的Dojo相关文章