2

2 つの主要なコンポーネントを持つ EXTJ で Web ページを作成しようとしています。

  1. フォーム (Ext.form.Panel)
  2. パネル (Ext.tree.Panel)

フォームはいくつかの値を取得することになっています。これにより、2 番目のパネルにツリーが設定されます。最初のパネルのボタン ハンドラーでは、更新された JSON オブジェクトにアクセスできますが、tree.Panel の表示を更新する TreeStore を更新する方法がわかりません。

これは私がこれまでに持っているものです:

Ext.define('TreeServiceData',{
    config:{
    data : ''
    },print : function() {
    console.log("Printing data: ")
    console.log(this.data.children[0])
    }
});
var dataObject = Ext.create('TreeServiceData');
dataObject.setData({'expanded':false,'children':[{'text':'Master','expanded':true,'leaf':false,'children':[{'text':'Child 1','expanded':true,'leaf':false,'children':[{'text':'Child 2','expanded':true,'leaf':false,'children':[{'text':'Child 3','expanded':false,'leaf':false}]}]}]}]})


Ext.define('TreeStoreData',{
    extend: 'Ext.data.TreeStore',
    model: 'TaskModel',
    autoLoad: true,
    autoSync: true,
    proxy: {
        type:'memory',
        reader: {
            type:'json'
        }
    },
    root:dataObject.getData()
});

var treeStore = Ext.create('TreeStoreData');

今、私は次のようなボタン呼び出しでこのツリーストアの値を更新して表示しようとしています:

buttons:[
{
    text:'Get CCP/Product',
    handler:function (btn, evt) {
        dataObject.print();
        treeStore.removeAll();           
        dataObject.setData({'expanded':false,'children':[{'text':'Master11','expanded':true,'leaf':false,'children':[{'text':'Child 12','expanded':true,'leaf':false,'children':[{'text':'Child 23','expanded':true,'leaf':false,'children':[{'text':'Child 34','expanded':false,'leaf':false}]}]}]}]})
        dataObject.print();

    }
}
]

しかし、このボタンハンドラーでは、treeStore.removeAll() メソッドで「Uncaught TypeError: Cannot call method 'indexOf' of undefined」というメッセージが常に表示されます。ここで、treestore はこのコンテキストで明確に定義されています。

質問 1) TreeStore を更新する正しい方法は何ですか?

4

2 に答える 2