0

このコードは 4.x で問題なく動作します。目標は、シングル クリックでツリー アイテムを開閉することです。クリック後に 5.x でエラーが発生しました:「self.getTreeStore は関数ではありません」API ドキュメントで関連する変更が見つかりません。4.x と 5.x の動作が異なる理由を教えてください。

Ext.onReady(function(){
    Ext.create('Ext.tree.Panel', {
        border: false,
        height: 200,
        listeners: { itemclick: function(self, record, item, index, event) {
                       if (record.data.href=='') {
                         var Enode=self.getTreeStore().getNodeById(record.internalId);
                         if (Enode.isExpanded()) 
                           Enode.collapse();
                         else
                           Enode.expand();
                       } } },
        rootVisible: false,
        width: 200,
        root: {
            children: [ { 
               text: 'Menu 1',
               children: [{ text: 'Menu 1.1',leaf: true }]
            } ] },
        renderTo: Ext.getBody()
    });
});

よろしく、アニー

4

2 に答える 2

2

tree.getStore()5.0 では、 justまたはtree.getRootNode().getTreeStore()where treeis のインスタンスを呼び出すことができますExt.tree.Panel

しかし、あなたのケースではそれを行う必要はありません. recordin itemclickhandler にはNodeInterface. 代わりにこれを試してください:

itemclick: function(self, node, item, index, event) {
    if (node.data.href=='') {
        if (node.isExpanded()) {
            node.collapse();
        } else {
            node.expand();
        }
    } 
}

作業例: http://jsfiddle.net/9KJME/1/

于 2014-07-20T13:14:23.440 に答える
1

@Lolo が解決策を説明しました。動作が異なる理由については、selfパラメータはExt.tree.ViewではなくExt.tree.Panelです。それにはさまざまな方法があります。

Ext.tree.ViewgetStore()メソッドはありますが、getRootNode()

于 2014-07-21T10:48:36.813 に答える