Ich denke, ich habe das gleiche Problem konfrontiert. Ich löste es mit dem Senden eines zusätzlichen Parameters, wenn der Speicher neu geladen wurde, was dem Back-End mitteilte, welcher der Knoten gerade expandiert ist. Dann fügte ich die Daten der erweiterten Knoten in die Antwort ein, da ich nur die erweiterten Knoten neu laden musste (die nicht erweiterten Knoten sind nicht sichtbar und werden beim Erweitern geladen).
Also in Ihrem Fall könnten Sie anhängen und Event-Handler auf das Geschäft "Vorher laden" Ereignis, das die Informationen über die erweiterten Knoten an die Anfrage anhängen würde. Dann bei Ladenereignis expandieren Sie die Knoten, die erweitert wurden.
also vor Belastung der Knoten speichern:
store.on("beforeload", function(store, operation) {
var root = store.getRoot(),
saveExpandedNodesIds = function(node) {
if (node.childNodes) {
Ext.Array.each(node.childNodes, function(rec){
if (rec.get('expanded')) {
// save to tree object
tree.expandedNodes[]= rec.get('id');
saveExpandedNodesIds(rec);
}
});
}
}
saveExpandedNodesIds(root);
});
Und auf Lastaufnahme des ausgedehnten Zustands
store.on("load", function() {
fn: function(store) {
/**
* If tree has expanded nodes, expand them after load
*/
if(tree.expandedNodes > 0) {
while(tree.expandedNodes.length > 0) {
var item = tree.expandedNodes.shift();
if (store.getById(item) !== null) {
store.getById(item).expand();
}
}
}
}
});
Ich kann später einen Ausschnitt schreiben, wenn Sie möchten.
Ja! Es scheint eine nette Annäherung zu sein, ich werde es nicht als Antwort markieren, bis ich es versuche, danke. –
Hast du es schon probiert? Bitte als Antwort markieren, wenn es in Ordnung ist. – taubi19
Ja, es funktionierte wie ein Zauber! Vielen Dank! (Bitte editieren Sie Ihren Beitrag im ersten Block, den Sie "funciton" anstelle von "function" geschrieben haben). –