2

データが読み込まれた後、多くの場所で再利用したい遅延読み込みdijit.treeがあります。しかし、他のツリーのストアオブジェクトを、ほとんどのデータを含むものに置き換えると、ノードはすべて拡張されます。新しいツリーでストアとして設定する前に、すべてのアイテムが折りたたまれるようにストアを変更したいと思います。これを達成する方法を教えてもらえますか?

4

1 に答える 1

2

ツリーノードの状態に関する情報が含まれていないため、このストアを使用することはできません。この「魔法」はを介して実行されます。ここでいくつかの例TreeNodeを参照してください

「完璧な解決策」は、拡張する必要のあるパスを特定し、必要なツリーノードに移動するようにツリーのパスを設定することです。

ただし、遅延読み込みを行うためstate、ツリーを初期化するときに-を確認する必要がありますUNCHECKED。ただし、おそらく起動しているCookie機能が組み込まれているので、必ず新しいツリーを作成してください。{ persist:false }

collapseChildren(TreeNode)ツリーを拡張して、次のように受け入れるようにすることもできます。tree.set("path", [pathsArray]);

collapseChildren : function(top) {
        var self = this;
        if(!top || !self.model.mayHaveChildren(top.item)) return;
        top.getChildren().forEach(function(n) {
                if(n.item.children) {
                        //dojo.style(n.getParent().containerNode, { overflowY: 'hidden', overflowX: 'hidden'});
                        self._collapseNode(n);
                        self.collapseChildren(n);
                }
        });
},

編集:

autoExpandフラグがコンストラクターに渡されると、ツリーは最初にすべてのノードが展開された状態で表示されます。

次に、collapseAll()とexpandAll()を呼び出して、それぞれツリーを折りたたみと展開できます。 http://livedocs.dojotoolkit.org/dijit/Tree-examples#id3

于 2012-05-24T16:34:42.253 に答える