2012-01-31 13 views
0

私のメニューを構築するためのプロキシを使用しない単純なTreeStoreを使用しています。ここでは簡単な例です:ExtJS4:Treestoreからコントローラへのパラメータ/プロパティの受け渡し

ストア:I'veは "クリック" イベントにリスナーを追加コントローラで

Ext.define('LT.store.MnuApplication', { 
    extend: 'Ext.data.TreeStore', 
    root: { 
     expanded: true, 
     children: [{ 
      text: "Lists", 
      expanded: true, 
      children: [{ 
       text: "Countries", 
       leaf: true, 
      }] 
     }] 
    } 
}); 

コントローラー:

init: function() { 

     this.control({ 

      /** 
      * Catch the treepanels in the menu accordion 
      */ 
      'menu-main treepanel': { 

       itemclick: function (view, record, item, index, event){ 

        var clickedMnuNode = record; 
        var tabPanel = this.getTabPanel();     

        // Open tab only if the menu node is a leaf node 
        if (clickedMnuNode.isLeaf()) { 
         tabPanel.add({ 
          xtype: clickedMnuNode.raw.loadTabComponent 
         }).show(); 
        } 
       } 
      } 
     }); 

     this.callParent(); 

    } 

これで私の問題は解決しました:私はTreeStoreでどのアクションをコントローラによって実行されます - 特にどのコンポーネントがロードされるべきですか。

は、例えば、私はTreeStoreのは、このようになっていることを希望:あなたが見ることができるように

Ext.define('LT.store.MnuApplication', { 
    extend: 'Ext.data.TreeStore', 
    root: { 
     expanded: true, 
     children: [{ 
      text: "Lists", 
      expanded: true, 
      children: [{ 
       text: "Countries", 
       leaf: true, 
       loadComponent: 'country-list', 
       loadTarget: 'tabPanel' 
      }] 
     }] 
    } 
}); 

はI'veツリーリーフへの2つの新しいパラメータを追加しました。今では、レコードの「RAW」メソッドを使用してそれらのデータセットにアクセスできません。しかし、それは本当にすてきな解決策ではありません - そうではありませんか?

TreeStoreからコントローラーへの追加パラメーター(「loadComponent」や「loadTaget」など)を渡す方法は誰にでも分かりますか?事前に

おかげ&歓声、過去に マイケル

答えて

0

は、私は私のカスタムパラメータと同様のツリーを作成し、私は私のTreeStoreのためのカスタムモデルを使用。デフォルトではあなたのノードはNodeInterfaceのプロパティを持っているだけなので、

+0

私は同様の問題があるので、ノードのGUIDをTreeStoreプロキシに渡すと、次のレベルのノードが展開されたノードに基づいてロードされますか? – sambomartin

+1

モデルでidPropertyを設定する必要があります。プロキシは要求を行うときにこのプロパティを使用します。 –

+0

あなたはスターです!本当にシンプル。ありがとう – sambomartin

関連する問題