dojo的Tree非常是灵活,可是官方站点上的样例却非常少,并且也比較分散,兴许将持续完好本样例。

总的来说,要使用tree,要接触到三个类:"dojo/store/JsonRest","dijit/tree/ObjectStoreModel","dijit/Tree"。

通过JsonRest异步从服务端获取数据。

ObjectStoreModel能够设置推断当前数据是否有子结点的方法、数据中哪个属性用来作为label显示在树中,数据使用什么图标显示等。

Tree详细显示树。

			var usGov = new JsonRest({
target : "/rest/getTreeData",//获取树数据的URL
getChildren : function(object) {//怎样获取下级数据,这里与官方样例里的不一样,官方样例里要求返回的数据信息中要同一时候返回当前结点数据,大多数情况下这个是多余的,使用以下的程序, 服务端仅仅须要返回下级结点数据的数组就可以。
if (typeof object.children == "undefined") {//这段程序,推断到当本结点的数据的下级数据已经有了后,就不须要再从服务端获取了。
return this.query({PID:object.ID}).then(function(fullObject) {
return fullObject;
});
} else {
return object.children;
}
}
});
// create model to interface Tree to store
var model = new ObjectStoreModel({
store : usGov,
// query: {PID: "root"},//通常情况下这个是不须要设置的,假设不设置,从服务端获取根结点数据时将不传參数
mayHaveChildren : function(object) {//推断数据是否有儿子,当结点展开时是否会调用上面store中的getChildren方法,就是通过这种方法推断的
return !object.leaf;//本处于官方样例不一样,并非复用children属性的,程序更为清析。
},
getLabel : function(object) {//数据对象中个属性是用来显示在树结点中的。
return object.NAME;
}
});<pre name="code" class="javascript"> var tree = new Tree({
model : model,
persist : false,
showRoot : true,
region : 'center',//假设父容器是BorderContainer,指定树显示在该父容器中间
style : "overflow:hide;padding:0px;"
});


本树结点第一次从服务端获取根结点的数据样例:
<pre name="code" class="javascript">[{NAME: "US Government",
id: "a1",ID:"1",
leaf:false,
children:[{
NAME: "Congress2",
id: "a2",
ID:"2",
leaf:false
},{
NAME: "Congress3",
id: "a3",
ID:"3",
leaf:true
}]
}]

</pre><pre code_snippet_id="500089" snippet_file_name="blog_20141028_20_3872161" name="code" class="javascript">展开树中Congress2结点时从服务端获取的数据样例:
<pre name="code" class="javascript">[{ NAME: "Congress4",
id: "a4",
ID:"4",
leaf:false,
children:[{
NAME: "Congress6",id: "a6",ID:"6",leaf:true},
{NAME: "Congress7",id: "a7",ID:"7",leaf:true}]},
{NAME: "Congress5",id: "a5",ID:"5",leaf:true}]

特别要注意,数据中的id属性一定要有,而且不能反复,否则在结点展开的时候可能不会触发从后台获取数据的动作。

使用dojo的tree的更多相关文章

  1. dojo创建tree

    今天介绍dojo目录树的效果,效果如下图: HTML代码如下: <body class="claro"> <div id="rootlessTree&q ...

  2. dojo tree edit的使用[前端]

    var store = new mydata.JsonRestStore({ target: "<%=ResolveUrl("~/uieditserver.ashx" ...

  3. Dojo Tree设置默认选中项并且获得它

    先上用来生成Tree的JSON数据 [    { "id": "Root", "name": "资源目录" },    ...

  4. dojo Tree 添加、删除节点

    var tree=this.tree; var store=tree.model.store; if(this.node){ console.log(this.node) var children=t ...

  5. dojo.require()的相关理解

    Dojo 提供了一个非常强大的javascript控件库. 在使用dojo之前,用户基本上不需要具备任何基础知识. 你可以用script远程链接到dojo(dojo.js), 也可以把dojo.js下 ...

  6. 《静静的dojo》 总体教程介绍

    web2.0时代,ajax技术成为整个前端开发领域的基石.大部分的书籍.博客由此切入来介绍前端类库与框架,所以dojo往往只被当做一个ajax类库来介绍,然而仅仅以此来定位dojo,无异于管中窥豹.对 ...

  7. arcgis javascript dojo

    一.为什么说ArcGIS API for JavaScript是构建于Dojo之上的? 1. 编写ArcGIS API for JavaScript的ESRI开发者使用Dojo来简化他们的开发过程,同 ...

  8. 理解dojo.require机制

    转自:http://blog.csdn.net/dojotoolkit/article/details/5935844 Dojo 提供了一个非常强大的javascript控件库. 在使用dojo之前, ...

  9. Dojo Widget系统(转)

    Dojo 里所有的小部件(Widget)都会直接或间接的继承 dijit._Widget / dijit._WidgetBase dijit._Widget 是 dojo 1.6 和 1.6之前的版本 ...

随机推荐

  1. openssl 证书请求和自签名命令req详解

    1.密钥.证书请求.证书概要说明 在证书申请签发过程中,客户端涉及到密钥.证书请求.证书这几个概念,初学者可能会搞不清楚三者的关系,网上有的根据后缀名来区分三者,更让人一头雾水.我们以申请证书的流程说 ...

  2. js html5 仿微信摇一摇

    看微信摇一摇之后忽然想知道他是怎么写的.于是就在网上查了一些资料,有些是借鉴别人的.大家共同学习啊 先放代码 <body onload="init()"> <p& ...

  3. createjs基础

    <canvas id="gameView" width="400px" height="400px" style="back ...

  4. LeetCode-Divdend two Integers

    题目: Divide two integers without using multiplication, division and mod operator. 思路分析 二分法.将除数不断增倍,而结 ...

  5. Linux-统一事件源

    概念: 信号时一种异步事件:信号处理函数和程序的主循环式两条不同的执行路线,信号处理函数需要尽可能快地执行完毕,以确保该信号不被屏蔽.(为了避免一些竞态条件,信号在处理期间,系统不会再次出发它)太久. ...

  6. DNF(一.YUM已死,DNF代之)

    Yum还没学好呢,突然听到已经要被抛弃了.恐慌至极.. 在最新版的Fedora 22 抛弃了Yum包管理器,取而代之的是DNF.. 那么搜搜 Fedora 22 Release Note.. 官方给出 ...

  7. 伪协议触发onbeforeunload

    根据MSDN描述,IE的onbeforeunload事件触发条件: 简单点来说就是页面URL发生改变时触发: * 关闭浏览器窗口 * 点击后退.前进.刷新.主页 * 点击链接到新页面 * 调用超链接的 ...

  8. ECSHOP商城全站自定义TITLE标题设置

    对于SEO来说,能让标题自定义的将会大大增加SEO效果,提高独立商城的流量,今天小编就收集从网上弄来ecshop全站自定义代码,很全哦! 1.Ecshop商品分类页如何实现自定义Title 最近发现很 ...

  9. html 作业1

    <body bgcolor="#000000" topmargin="200px" leftmargin="200px" text=& ...

  10. Android自定义日历,可以点击、标注日期、节气、旧历等

    1. [图片] 9A59974C-47D4-47E3-8136-3F873EB9BBDC.jpg 2. [图片] left_arrow_pre.png 3. [图片] left_arrow.png 4 ...