extjs treenode appendchild работает неправильно - PullRequest
0 голосов
/ 17 мая 2019

У меня есть древовидная панель, которая загружается по запросу из API веб-отдыха.Остальные API вернут массив с данными в соответствии с идентификатором выбранного узла.Вот код:

itemdblclick: function(item, record, eOpts) {
        var store = Ext.getStore('mystore');
        var newStore = Ext.create('mystore', {
            autoDestroy: true,
            storeId: 'otherId'
        });
        var parentid = record.data.id;
        var that = this;

    newStore.proxy.extraParams = {...};
    newStore.autoDestroy = true;
    newStore.storeId = 'otherId';

    newStore.load({
        callback: function(items) {
            var node = store.getRootNode().findChild('id', record.data.idelement, true);

            for (var i = 0, l = items.length; i < l; i++) {
                var item = items[i].data;
                var child = {..., idparent: parentid};
                var newnode = node.createNode(child);
                node.appendChild(newnode, true);
            }
            node.expand();
        }
    });
}

Благодаря norbeq , который дал мне свет, чтобы изменить идентификатор второго магазина.Дело в том, что дерево красиво заполнено, а узел расширен, но (почему всегда есть «но»), рядом с расширенным узлом нет -, + остается прежним.

Вот что я имею в виду:

screenshot 1

Я выделил красным, что отметка + остается и папкавсе еще закрыт.

Кроме того, если я нажму на символ +, это то, что произошло:

screenshot 2

Как я могу решитьэто?

1 Ответ

0 голосов
/ 29 мая 2019

Ну, наконец, я должен сказать, что официальная документация extjs довольно скудна для меня. Я нашел решение с помощью теста и прочитал много постов в нескольких форумах. Я нашел решение, которое могло бы помочь другим:

var rootNode = store.getRootNode();

                for (var i = 0, l = records.length; i < l; i++) {
                    var x = records[i].data;
                    var child = { ... };

                    if (!child.idparent) {
                        rootNode.appendChild(child);
                    } else {
                        var parent = rootNode.findChild('idelement', child.idparent, true);
                        parent.appendChild(child);
                    }

                    if (!child.leaf) {
                        var node = store.findNode('idelement', child.idelement);
                        node.set('expanded', true);
                    }
                }

                rootNode.set('expanded', true);

Вот и все

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...