关于Dojo,我接触的比较晚,我是做web开发的,语言也一直在用Java,后期项目组转型,开始研究GIS,选择的是ArcGIS for javascript ,为什么要提到arcgis,因为arcgis for javascript用的就是Dojo,当然在刚刚接触arcgis的时候,我还不认识什么Dojo;
逐渐的什么arcgis,了解他的内部构造与写法,第一次发现了dojo;不过dojo在国内的网站真的很难找到规整的文档,学习资料更是没有,api这能在官网在线查看,个版本之间存在跨度,学起来还无头绪,几经周折最终还是被dojo深深的吸引住了;
web开发后台一般以ssh的框架居多,我一直尝试前台dojo与后台ssh的组合,但是一直无头绪,在网上查找,有很多成功者,但是却没有例子,而且一般都是两年前的帖子,哎,只能自己慢慢摸索,最终我成功的组合出了第一版dojo与ssh。
以往我们使用ssh与jquery的组合居多,还有extjs也不少,如果你只有使用jquery的经历,那你走在dojo的道路上真的是充满了曲折,我也是在借鉴了jquery-easyui的基础上,才逐渐的摸索出一种思路,由于是dojo的初学者,可能思路不是很完善,仅供参考。
(一)iframe与dojo
以往我们使用jquery的时候都是伴随着iframe使用的,最简单的就是iframe分为上、左和右的布局,左侧一般是菜单栏,点击跳转请求,在右侧显示;然而在dojo中,布局是在一个页面通过不同的div来完成的,那么应该怎么实现在div中的跳转呢?摸索了很久,发现有两种方式:第一种是使用dojo中的iframe方法,第二种比较简单,直接去判断div的id来选择打开还是刷新,本人实现的是第二种方法,如下
/** * 判断新table船体是否存在 * 1.存在,显示 * 2.不存在,新建并显示 */ function addtable(title,src){ var tc = dijit.byId("mainTabContainer"); var cp; if(dijit.byId(title)==undefined){ cp = new dojox.layout.ContentPane({ id:title,href:src,title: title,selected: true,closable: true }); tc.addChild(cp); tc.selectChild(cp); }else{ dijit.byId(title); tc.selectChild(dijit.byId(title)); dijit.byId(title).refresh();//刷新 } }
很简单,我在菜单栏的项目上绑定了一个onclick时间,点击触发addtable函数的同时,将标题与连接传进函数,然后用代码的方式生成一个dojox.layout.ContentPane,之后每次点击时间执行函数,都回去判断标题是否存在,存在刷新,不存在创建一个dojox.layout.ContentPane。
ps:我会坚持每天写下一点心得,就当做学习dojo的日记吧,希望能帮到别人!