У меня есть панель дерева (Ext.tree.Panel
), которая на select
загружает другую панель. Теперь, когда я изменяю некоторые данные в другой панели, я хочу изменить узел в дереве, а затем повторно выбрать его (в зависимости от данных, хранящихся на узле, некоторые вычисления запускаются при выборе).
Теперь вопрос в том, как мне повторно выбрать уже выбранный узел, чтобы обработчик выбора получил соответствующие аргументы?
Использование Treepanel.fireEvent("select")
не дает выбора обработчику. Я также пытался запустить событие на узле или использовать 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();
}
Вопрос: чем заменить строку на ***, чтобы получить предупреждение () при нажатии кнопки?
(я использую Ext.js 4.2)
(выберите узел, чтобы включить кнопку в примере)