Javascript 使用Ext.js 4.2选择一个已选择的树节点(重新选择)

Javascript 使用Ext.js 4.2选择一个已选择的树节点(重新选择),javascript,extjs,Javascript,Extjs,我有一个Treepanel(Ext.tree.Panel),在select上加载另一个面板。现在,当我在另一个面板中更改一些数据时,我想更改树中的节点,然后重新选择它(根据节点上存储的数据,选择时会触发一些计算)。 现在的问题是,如何重新选择已选择的节点,以便选择处理程序获得适当的参数? 使用Treepanel.fireEvent(“选择”)不会将选择提供给处理程序。我还尝试在节点上触发事件或使用Treepanel.selectPath(correctPath)但这不会触发,因为节点已被选中 要

我有一个Treepanel(
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