2

ここで、TreePanel を使用してサーバー上のフォルダー構造を複製しようとしているような典型的な問題があります。シナリオは、子が繰り返されるフォルダーがいくつかあるということです。つまり、ファイル/フォルダー名は同じで、Node id. 展開して折りたたもうとすると、親が 2 つの子にマップできず、展開によって重複したフォルダーが作成されます。

ノードを追加する前のコードは、次のようにツリーを拡張しました。

 Ext.define("my.widget.ContentTree",
        {
            extend: "Ext.tree.Panel",
            alias: "widget.my_content_tree",

...

        // beforeappend event required for node initialization
                this.store.on("beforeappend", onBeforeAppendNode, this);
                this.store.on("append", onAppendNode, this);

このコード行は、ノードを追加する前のロジックです。

function onBeforeAppendNode(parent, newNode) {
    /* ext js expands & collapses the tree w.r.t internalId. This Id is by        
              default set to the node ID. Appending the parent id to the child with     
             additonal timestamp ensures that there cannot be duplicate IDS
     No adverse effects if the internal ids are changed. its neither persisted 
             nor any state is maintained w.r.t to internal ID.*/

  // Important Line Start
    if(parent!=null)
          newNode.internalId=newNode.internalId+"_"+parent.get("id")+"_"+Math.round(new    
          Date().getTime()) ;
 // Important Line End
    var nid = newNode.get("id");
...

私のロジックは、親IDとタイムスタンプを追加してツリーのinternalIDを変更することです。

私の質問は、私のアプローチが正しいかどうかです。これを行うEXT js APIを見つけようとしていますが、見つけることができなかったからです。

誰でも助けてください。

ありがとうございました。

4

1 に答える 1