我正在使用Jasmine测试我的ExtJs应用程序。所以没有涉及的观点。
我想扩展几个节点,但首先是我的根节点。但即使扩展该节点也会失败。
我创建了我的TreeStore,然后:
代码:
// oStore is my treestore, everything OK
// Here, I also tried calling oStore.load(); see below
var oNode = oStore.getNodeById( 'root' );
// oNode.isExpanded() says false
// oNode.hasChildNodes() says false
oNode.expand(false, function(oChildren) {
// it never gets here
console.log( "hello?");
});
我的load
监听器被调用,但beforeexpand
的监听器没有被调用。
如果我在创建商店后开始调用oStore.load()
,那么当调用on load
侦听器时,oNode.childNodes.length
有3个孩子......
那么为什么没有调用expand()
的回调?如何让该节点扩展?
为什么在调用oStore.load()
时节点的子节点已经加载?之后expand()
也没有被解雇。
编辑:
使用expanded: true
启动我的根节点会使我的商店在collapse()
上正确折叠,但之后expand()
什么都不做。
oNode.collapse(false, function() {
console.log( "collapse()" ); // works, but expand() afterwards does not
});
答案 0 :(得分:1)
找到解决方案。我需要等待商店加载。是茉莉花问题:
runs( function() {
oStore.on( 'load', function() {
bStoreLoaded = true;
});
});
waitsFor( function() {
return bStoreLoaded;
}, " store to be loaded", 5000 );
runs( function() {
oNode.expand(false, function( aoChildren ) {
aoChildrenRoot = aoChildren;
bRootExpanded = true;
});
});
答案 1 :(得分:0)
源中有一些复杂的逻辑告诉节点它是否需要扩展或可扩展。看看下面的代码,当我尝试以编程方式操作树时,我最终求助于该代码:
if (!parentNode.isExpanded() && !parentNode.isLeaf()) {
parentNode.expand(false, function () {// deal with open or closed paths
console.log('expanded parent to pick up new item');
});
} else {
parentNode.callStore('suspendAutoSync');
if (parentNode.isLeaf()) { // Parts that are leafs
parentNode.set("leaf", false); //must be set to work properly
parentNode.appendChild(newPart);
parentNode.expand(); //expand to show newly created child
} else {
parentNode.insertChild(0, newPart);
}
parentNode.callStore('resumeAutoSync');
}