1

ツリーパネルがあり、 http://jsfiddle.net/kTedM/のように選択したときにノードを取得しようとしています

 Ext.create('Ext.tree.Panel', {
        title: 'Simple Tree',
        width: 200,
        height: 200,
        store: store,
        rootVisible: false,
        dockedItems: [{
            xtype: 'toolbar',
            items: {
                text: 'Get Selected nodes',
                handler: function(){
                    var s = this.up('panel').getSelectionModel().getSelection();
                    if (s[0])
                        alert(s[0].data.text + ' was selected');
                    else alert('no selected');
                }
            }
        }],
        renderTo: Ext.getBody()
    });

ただし、以下の手順に従うと、バグが表示されます。

ステップ1:コードを実行してクリックget selected nodesすると、正しいアラートが表示されますno selected

step2:homeworkノードをダブルクリックしてクリックget selected nodesすると表示されます

ここに画像の説明を入力

しかし、そのノードが選択されていないことがわかりますか? そのおかげで修正する方法

4

1 に答える 1

2

実際には、「宿題」ノード選択されており、選択する必要があります。ダブルクリックして選択を解除する必要はありません。

バグは、このノードが選択されているという事実が視覚的に正しく表現されていないことです。明らかにバグです。

これは Ext4.2 で Sencha によって修正されました。このフィドルの更新を参照してください。バージョンを 4.2.0 に変更したところ、驚くべきことは何もありません...

したがって、まさにあなたの質問に答えるために、それを修正するには、最新バージョンにアップグレードする必要があると言えます。いくつかの新しいバグを導入した最新の 4.2.1 には反対し、むしろ 4.2.0.x にアドバイスします。

さて、フィドルへのリンクを許可するために、SOによっていくつかの投稿を余儀なくされているため、ここにいくつかのコードがあります。

// Same code as you
Ext.onReady(function () {
    var store = Ext.create('Ext.data.TreeStore', {
        fields: [
                {name: 'id',     type: 'string'},
                {name: 'text',     type: 'string'},
                {name: 'selected', type: 'string'}
        ],
        root: {
            expanded: true,
            id: '0',
            children: [{
                text: "detention",
                id: '1',
                leaf: true
            }, {
                text: "homework",
                id: '2',
                expanded: true,
                children: [{
                    id: '3',
                    text: "book report",
                    leaf: true
                }, {
                    id: '4',
                    text: "alegrbra",
                    leaf: true,
                    selected: 'true'
                }]
            }, {
                id: '5',
                text: "buy lottery tickets",
                leaf: true
            }]
        }
    });

    Ext.create('Ext.tree.Panel', {
        title: 'Simple Tree',
        width: 200,
        height: 200,
        store: store,
        rootVisible: false,
        dockedItems: [{
            xtype: 'toolbar',
            items: {
                text: 'Get Selected nodes',
                handler: function(){
                    var s = this.up('panel').getSelectionModel().getSelection();
                    if (s[0])
                        alert(s[0].data.text + ' was selected');
                    else alert('no selected');
                }
            }
        }],
        renderTo: Ext.getBody()
    });
});
于 2013-09-19T20:34:45.660 に答える