Javascript 使用Ext.js 4.2选择一个已选择的树节点(重新选择)
我有一个Treepanel(Javascript 使用Ext.js 4.2选择一个已选择的树节点(重新选择),javascript,extjs,Javascript,Extjs,我有一个Treepanel(Ext.tree.Panel),在select上加载另一个面板。现在,当我在另一个面板中更改一些数据时,我想更改树中的节点,然后重新选择它(根据节点上存储的数据,选择时会触发一些计算)。 现在的问题是,如何重新选择已选择的节点,以便选择处理程序获得适当的参数? 使用Treepanel.fireEvent(“选择”)不会将选择提供给处理程序。我还尝试在节点上触发事件或使用Treepanel.selectPath(correctPath)但这不会触发,因为节点已被选中 要
Ext.tree.Panel
),在select
上加载另一个面板。现在,当我在另一个面板中更改一些数据时,我想更改树中的节点,然后重新选择它(根据节点上存储的数据,选择时会触发一些计算)。
现在的问题是,如何重新选择已选择的节点,以便选择处理程序获得适当的参数?
使用Treepanel.fireEvent(“选择”)
不会将选择提供给处理程序。我还尝试在节点上触发事件或使用Treepanel.selectPath(correctPath)
但这不会触发,因为节点已被选中
要测试的简单示例:
var test = function () {
Ext.create("Ext.window.Window", {
items: [{
xtype: "treepanel",
width: 200,
height: 150,
store: Ext.create("Ext.data.TreeStore", {
root: {
expanded: true,
children: [
{ text: "test0", leaf: true, dataForSomeOtherOperation: { x: 1, y: 1 } },
{ text: "test1", leaf: true, dataForSomeOtherOperation: { x: 1, y: 1 } },
{ text: "test2", leaf: true, dataForSomeOtherOperation: { x: 1, y: 1 } },
]
}
}),
listeners: {
select: function (model, selected) {
this.up("window").down("button").setDisabled(false);
alert(selected.data.dataForSomeOtherOperation.x);
}
}
}],
tbar: {
items: [{
text: "Some Event Changing Selected Node",
disabled:true,
listeners: {
click: function () {
var treePanel = this.up("window").down("treepanel"),
selected = treePanel.getSelectionModel().getSelection()[0];
selected.data.dataForSomeOtherOperation.x = 666;
treePanel.fireEvent("select"); <--***
}
}
}]
}
}).show();
}
var测试=函数(){
Ext.create(“Ext.window.window”{
项目:[{
xtype:“树面板”,
宽度:200,
身高:150,
存储:Ext.create(“Ext.data.TreeStore”{
根目录:{
对,,
儿童:[
{text:“test0”,叶:true,dataForSomeOtherOperation:{x:1,y:1},
{text:“test1”,叶:true,dataForSomeOtherOperation:{x:1,y:1},
{text:“test2”,叶:true,dataForSomeOtherOperation:{x:1,y:1},
]
}
}),
听众:{
选择:功能(型号,选定){
此.up(“窗口”).down(“按钮”).setDisabled(假);
警报(选中.data.dataForSomeOtherOperation.x);
}
}
}],
待定:{
项目:[{
文本:“某些事件更改所选节点”,
残疾人:对,,
听众:{
单击:函数(){
var treePanel=此.up(“窗口”).down(“treePanel”),
selected=treePanel.getSelectionModel().getSelection()[0];
已选择.data.dataForSomeOtherOperation.x=666;
treePanel.fireEvent(“选择”);只需取消全部并重新选择节点,如下所示:
Ext.application({
name: 'Fiddle',
launch: function () {
Ext.create("Ext.window.Window", {
items: [{
xtype: "treepanel",
width: 200,
height: 150,
store: Ext.create("Ext.data.TreeStore", {
root: {
expanded: true,
children: [{
text: "test0",
leaf: true,
dataForSomeOtherOperation: {
x: 1,
y: 1
}
}, {
text: "test1",
leaf: true,
dataForSomeOtherOperation: {
x: 1,
y: 1
}
}, {
text: "test2",
leaf: true,
dataForSomeOtherOperation: {
x: 1,
y: 1
}
}, ]
}
}),
listeners: {
select: function (model, selected, record,r,t) {
this.up("window").down("button").setDisabled(false);
alert(selected.raw.dataForSomeOtherOperation.x);
}
}
}],
tbar: {
items: [{
text: "Some Event Changing Selected Node",
disabled: true,
listeners: {
click: function () {
var treePanel = this.up("window").down("treepanel");
var selected = treePanel.getSelectionModel().getSelection()[0];
selected.raw.dataForSomeOtherOperation.x = 666;
//Fire the event by deselecting and reselecting
treePanel.getSelectionModel().deselectAll();
treePanel.getSelectionModel().select(selected)
}
}
}]
}
}).show();
}
});
谢谢,很明显,我现在有点不好意思了:D