我有一个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
,您将看到
但是我看到节点没有被选中?如何解决这个问题
答案 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()
});
});