Я работаю с treePanel с ExtJS 4.2.1. Моя проблема довольно тонкая, чтобы объяснить.ExtJS 4.2.1 TreePanel не обновляет, как я хочу
У меня есть две кнопки, кнопка дерева и кнопка очистки.
Когда я нажимаю кнопку «Дерево», он показывает treePanel с checkNodes, чтобы вы могли проверить некоторые узлы. У меня есть действительная кнопка в моей панели дерева, чтобы подтвердить выбор. После того, как вы нажмете эту кнопку, на панели будут добавлены проверенные узлы (точно уйдет, но это детали). Эта панель представляет собой сетку, и это список узлов, которые вы проверили. Нет проблем с этой сеткой. У меня нет проблем с этой кнопкой и моей сеткой, и когда я нажимаю на действительную кнопку, проверенные узлы правильно перечислены в моей панели сетки.
Когда я нажимаю кнопку «Очистить», которая не находится на моей панели деревьев, она очищает весь мой выбор, моя сетка становится пустой, и все узлы из моего дерева становятся неконтролируемыми (например, если вы начинаете с самого начала).
Это работает, когда я делаю это в первый раз. Я могу проверить узлы, щелкнуть по правильной кнопке, и она будет правильно добавлять мои объекты в мою панель сетки (у меня никогда не возникает проблем с моей сеткой, в которой перечислены мои проверенные узлы). Если я нажму кнопку «Очистить», список станет пустым. Затем, если я нажму кнопку «Дерево», появится панель дерева, и, если я ее расширю, я вижу, что выбор повторно инициализирован, все узлы не отмечены.
ПРОБЛЕМА: если я выполняю ту же операцию во второй раз, кажется, что она отлично работает, но панель дерева не визуализируется повторно. Я нажимаю на кнопку дерева, появляется панель дерева, и когда я ее расширяю, я вижу, что проверенные мной узлы еще проверяются. Проблема в том, что когда я хочу проконсультироваться с моими проверенными узлами с некоторыми console.log(currentChild.data.checked)
, я вижу, что проверенное значение равно false
.
Так что, похоже, это работает с данными, но моя панель дерева неправильно обновлена (только когда я выполняю операцию более одного раза).
Я не знаю, правильно ли объясняется моя проблема. Вот часть соответствующего кода.
var uncheck = false;
button.on('click', function(){
var treeSelector = createTree('stAddAction.do?action=product_tree_selector', 550, 490, '', 'lbl_st_tree_selection_empty', true, 'productlist');
treeSelector.on('load', function(node, records, successful, eOpts){
if (uncheck){
node.tree.root.cascadeBy(function(currentChild){
if (currentChild.data.checked){
currentChild.data.checked = false;
currentChild.raw.checked = false;
currentChild.triggerUIUpdate();
console.log(currentChild);
}
});
}
uncheck = false;
});
buttonClear.on('click', function(){
uncheck = true;
treeSelector.store.proxy.url = "stAddAction.do?action=product_tree_selector";
treeSelector.store.load(treeSelector.getRootNode());
treeSelector.store.sync();
treeSelector.getView().refresh();
});
});
В чем проблема? Что бы это могло быть? Почему он работает один раз, но не дважды?
Спасибо
Я изменил заинтересованный строк с помощью команды currentChild.set ("checked", false); '. Ядро все еще работает в первый раз, когда я выполняю операцию (создавая панель дерева, проверяя узел, проверяя, а затем щелкаю по кнопке очистки, чтобы снять отметку со всех узлов моего дерева). Когда я хочу сделать это во второй раз, панель дерева, которая появляется полностью очищенная, но вторая четкая до сих пор не работает. Если я хочу выполнить ту же операцию в третий раз, когда я нажимаю на кнопку дерева, чтобы отобразить панель дерева, узлы все еще проверяются. – Poney
Я не понимаю, как он может работать один раз, но не второй раз, независимо от того, как я поворачиваю вещь. – Poney