Extjs4.1 - 在treepanel中获取选中失败

时间:2013-09-19 15:53:08

标签: extjs extjs4.1

我有一个treepanel,当我选择 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

第2步:双击homework节点,然后点击get selected nodes,您将看到

enter image description here

但是我看到节点没有被选中?如何解决这个问题

1 个答案:

答案 0 :(得分:2)

实际上,'家庭作业'节点 选中。没有理由双击它会取消选择它。

错误是选择此节点的事实未在视觉上正确表示。显然是一个错误。

Sencha在Ext4.2中修复了它。见this update of your fiddle;我刚刚将版本更改为4.2.0并且没有什么令人惊讶的...

所以,为了回答你的问题,我要说,为了解决它,你只需要升级到最后一个版本。我建议不要引用几个新的bug,而不是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()
    });
});