最近在项目中遇到一个Ext 异步树头痛的问题:树中的每个节点都有一个checkbox,当勾选父节点时,也需要将其所有的子节点都选中,但是问题是当前还没有加载这些子节点。知道可以通过对父节点加tree.on(checkedchange,function(node){node.expand(..递归.)});的形式逐个展开所有的子节点,但是怎样才能知道父节点下的所有子节点都被展开选中了呢? 因为要在这之后对该父节点和其所有子节点做一些操作。
[code="java"]
tree.on('checkedchange',function(node,checked){
node.attributes.checked = checked;
node.expand(true,true,function(){
node.eachChild(function(child){
child.getUI.checked = checked;
child.attributes.checked = checked;
child.toggle();
child.fireEvent('checkedchange',child,checked,tree);
});
node.collapse();
});
},tree);
[/code]
这个操作可能是在用户选中了父节点的情况下马上就执行(从选中父节点到执行操作的时间很短,其所有子节点根本都还没有完全展开),这样就有可能会丢失一些还没有来得及展开完的子节点,所以需要一个判断所有节点都被异步加载完的事件......(父节点下所有子节点的节点个数先前是未知的)....
希望大家各抒己见,帮帮解决下,谢谢!!本人才30分的积分,给出5分吧。