这一章重点还是理论多一些,而且是特别多,pdf不能拷贝,我也不想拷贝,我都是自己敲。这里字太多,我就敲了一点,如果大家有兴趣,就找李赞红老师的书看看吧。
Ext.onReady(function(){
/**
* 对于规模较大的项目其导航树非常复杂,如果数据特别多,也会导致树的级别或者结点很多,
* 而很多时候,不一定要操作所有结点,用户只关心他们感兴趣的结点,因为我们可以做异步
* 形成,点击某一个结点的时候,通过ajax从服务器拉去该结点的数据,而不是一次性将书的
* 所有结点都遍历出来。
*/
/**
* treeNode不支持异步读取子结点,该操作由Ext.tree.AsyncTreeNode类来实现,
* Ext.tree.AsyncTreeNode是TreeNode的子类,重写了部分方法,比如最关键的
* expand方法,hasChildNodes()等等,asyncTreeNode的expand方法先将数据
* 从服务器读出,再调用TreeNode的expand方法展开,异步读取结点是又他们两者共
* 同合作完成的。
*/
/**
* 从服务器获取数据由Ext.tree.TreeLoader负责,该类通过ajax将数据从服务器中
* 取回,创建爱你新结点作为子节点。Ext.tree.TreeLoader只支持Json对象,不支
* 数组或者XML。如果要支持他们,必须对该类进行重写,但是JSON格式确实是一种容易
* 理解并且高效的格式,如果没有什么特别的要求,最好还是不要改吧。
*/
/**
* 注意下面几个问题:
* 1、所有的结点必须定义一个唯一的ID,因为TreeLoader发请求时会传送一个名为node
* 的参数,该参数正式异步结点的ID 并根据id读取该结点下的所有子结点
* 2、必须明确声明结点的类型,如果结点为叶子结点,leaf设置为true,如果为非叶子结点
* leaf设置为false。
* 3、如果结点由数据库管理和维护,最最好设计一个能满足要求的表结构。
*/
/**
* 异步加载解析
* 一棵树至少要提供一个根结点,其他结点都可以异步加载生成,根结点应该是AsyncTreeNode
* 类型的结点,这样才能从服务器获取数据,我们这样定义根结点。
* var root = new Ext.tree.AsyncTreeNode({id:"1",text:"根结点",leaf:false});
* 根结点的ID被设置为了1,text是根结点,leaf为false表示该结点还有子结点,即不是子结点。
*
* TreePanel也有了不一样的配置,dataUrl选项是必须的配置,该选项指定返回子节点数据的服务器
* 资源,本例是servlet组件。
* var tree = new Ext.tree.TreePanel({
* title:"异步加载结点",
* width:300,
* height:300,
* dataUrl:"../../../syncTreeServlet"
* });
* tree.setRootNode(root);
* tree.render("a");
*/
});