2

まず第一に、ExtJSで新しいImです。n個の再帰アイテムを含むツリーメニューを取得するための最良の方法を教えてほしいと思いました。例:

フォルダ

..フォルダ

....アイテム

....フォルダ

......アイテム

......アイテム

....フォルダ

..。

私はSenchaによって提案されたベストプラクティスに従っています。1つのレベルでツリーメニューを実行できましたが、nレベルで実行しようとすると失敗します(実際、アプリは機能しますが、第1レベルの無限ノードが表示されます)。明らかに問題は私のメニュー項目のモデル定義です。以下を参照してください。

Ext.define('Dashboard.model.MenuItem',{
extend: 'Dashboard.model.AbstractMenuElement',

  fields:
  [
        {name: 'content', type: 'string'},
        {name: 'skeletonFlag', type: 'string'},
        {name: 'fatherId', type: 'int'} 
  ],


  associations:
  [
    {type: 'hasMany', model: 'Dashboard.model.MenuItem', name: 'children', mapping: 'items'}
  ]

});

したがって、このモデルは再帰的に無限ノードを作成します。しかし...再帰メニューを実現するために、メニュー項目をどのようにモデル化する必要があるか知っていますか?

ありがとう!

4

1 に答える 1

1

Ext JSでツリーのような構造を表示するには、 Ext.model.TreeModelExt.model.TreeStoreをExt.tree.Panelと組み合わせて使用​​するのが最善の策だと思います。

質問で言及した構造に一致する簡単な例を次に示します。

Ext.create('Ext.tree.Panel', {
    store: Ext.create('Ext.data.TreeStore', {
        root: {
            text: 'Root Folder',
            expanded: true,
            children: [
                {text: 'Folder 1', children: [
                    {text: 'Item 1', leaf: true}
                ]},
                {text: 'Folder 2', expanded: true, children: [
                    {text: 'Item 2', leaf: true},
                    {text: 'Item 3', leaf: true}
                ]},
                {text: 'Folder 3', children: []}
            ]
        }
    }),
    renderTo: Ext.getBody()
});

この例はPlunkerで見ることができます。

于 2013-05-29T17:11:40.663 に答える