Я работаю с деревом в ExtJS 4.2.1. Я использовал для установки модификаций элементов dom (точно изменить имя класса) с помощью слушателя afteritemexpand
, когда я расширяю узлы своего дерева. Фактически это должно было иметь листья с четным индексом с другим цветом, чем листья с нечетным цветом. Все нормально. Получение идентификаторов интересующих меня элементов, я могу получить к ним доступ, а затем изменить имя класса. Я сделал то же самое для другого дерева, но проблема в том, что при создании этого дерева я разворачиваю его с помощью expandAll()
, поэтому слушатель afteritemexpand
не вызывается. Мне нужно это expandAll()
, но мне нужен и слушатель afteritemexpand
. Причина, по которой я использую этот слушатель, заключается в том, что у меня есть легкий доступ к item.id с прототипом afteritemexpand(node, index, item, eOpts)
. С этим id я могу получить элемент, который я ищу, с помощью метода Ext.get(id)
. Я могу сделать это с помощью слушателя afterlayout
, но я бы предпочел не потому, что доступ к id не так прост. Я не могу сделать это с прослушивателем load
, потому что элементов dom еще нет.Listener afteritemexpand из ExtJS 4.2.1
Итак, я хочу знать, как я мог полностью расширить свое дерево и использовать код, который я сделал для своего afteritemexpand
?
Вот мой слушатель, чтобы вы могли лучше понять, что я хочу сделать (на самом деле просто добавьте 'tree-even-node'
в className из ровных листьев моего дерева).
listeners: {
afteritemexpand: function(node, index, item, eOpts){
var domLeaf = Ext.get(item.id).next();
for (var int = 0; int < node.childNodes.length; int++) {
if (node.childNodes[int].data.leaf && (int % 2) == 0) {
if (ids.indexOf(domLeaf.id) == -1) {
ids[indiceIds] = domLeaf.id;
indiceIds++;
}
}
domLeaf = domLeaf.next();
}
for (var int = 0; int < ids.length; int++) {
domLeaf = Ext.get(ids[int]);
if (domLeaf != null) {
for (var int2 = 0; int2 < domLeaf.dom.children.length; int2++) {
if (domLeaf.dom.children[int2].className.search('tree-even-node') == -1){
domLeaf.dom.children[int2].className += ' tree-even-node';
}
}
}
}
}