dojoTree Controller(1)

dojoTree Controller(1)

对树进行一些操作的后台是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)


未完...



你可能感兴趣的:(dojoTree Controller(1))