不做浮躁的人
正在行走的人...
posts - 77,  comments - 51,  trackbacks - 0

对树进行一些操作的后台是Controller类。而RpcController能够以RPC的方式,Json数据传递的方式将前端和后台进行结合。

我们可以查看原代码知道 TreeRPCController 继承于TreeLoadingController,而TreeLoadingController继承于TreeBasicController,TreeBasicController继承HtmlWidget。

我们先对TreeBasicController进行分析:
1:DNDController属性,如果该属性为“create",那么该Controller就具有拖动的功能。
if (this.DNDController == "create") {
   dojo.require("dojo.dnd.TreeDragAndDrop");
   this.DNDController = new dojo.dnd.TreeDNDController(this);
  }

2:dieWithTree:表示当树Destroy,Controller是否同时Destroy。
3:listenTree:将Controller绑定Tree的4个事件,如果DNDController存在,也同时绑定Tree的时间。
createDOMNode,treeClick,treeCreate,treeDestroy。
比如:两个绑定的原代码:
onCreateDOMNode: function(message) {

  var node = message.source;


  if (node.expandLevel > 0) {
   this.expandToLevel(node, node.expandLevel);
  }
 },

 // perform actions-initializers for tree
 onTreeCreate: function(message) {
  var tree = message.source;
  var _this = this;
  if (tree.expandLevel) {
   dojo.lang.forEach(tree.children,
    function(child) {
     _this.expandToLevel(child, tree.expandLevel-1)
    }
   );
  }
 },
4:改controller还提供了canMove,canRemoveNode,canCreateChild等方法判断是否能够移动节点,删除节点和创建子节点。移动节点的方法是move,在move方法体里面,首先调用canMove,判断是否能够移动,然后是调用doMove方法执行具体的移动,move方法返回true或false。其它删除和创建同理。
三个方法签名如下:
move: function(child, newParent, index)
removeNode: function(node, callObj, callFunc)
createChild: function(parent, index, data, callObj, callFunc)


未完...

posted on 2006-11-22 22:36 不做浮躁的人 阅读(1253) 评论(1)  编辑  收藏

FeedBack:
# re: dojoTree Controller(1)
2007-07-31 23:26 | davidpang
可以说一下TreeBasicController里头的 removeNode: function(node, callObj, callFunc)是怎样用吗  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 

<2006年11月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

常用链接

留言簿(8)

随笔分类(31)

随笔档案(75)

文章分类(1)

文章档案(3)

搜索

  •  

最新评论

阅读排行榜

评论排行榜