Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.11.2018, 17:07
Аспирант
Отправить личное сообщение для Ambassador Посмотреть профиль Найти все сообщения от Ambassador
 
Регистрация: 12.11.2015
Сообщений: 46

Скрывать в дереве только необходимые разделы
Приветствую.
В дереве при нажатии на кнопку скрываю записи:

{
       text: 'Collapse All',
       handler:function()
           {
    	    me.collapseAll()    	
           }
     }


Скрываются все записи, остается в видимости только Root.
Как сделать что бы находящиеся под Root 1го уровня разделы отображались?
Т.е что бы было так:
All otdels
----Otdel1
----Otdel2

А так же как можно реализовать скрытие дерева в handler кнопки, если она будет находиться не в initComponent: function() ?

Пример в fiddle
Спасибо

Последний раз редактировалось Ambassador, 27.11.2018 в 17:10. Причина: Уточнение
Ответить с цитированием
  #2 (permalink)  
Старый 27.11.2018, 19:51
Профессор
Отправить личное сообщение для siber-biber Посмотреть профиль Найти все сообщения от siber-biber
 
Регистрация: 07.08.2013
Сообщений: 208

Сообщение от Ambassador Посмотреть сообщение
Как сделать что бы находящиеся под Root 1го уровня разделы отображались?
Т.е что бы было так:
All otdels
----Otdel1
----Otdel2
вызывайте collapse (https://docs.sencha.com/extjs/6.5.2/...ethod-collapse) на записях которые должны остаться отображаемыми.
{
                            text: 'Collapse All',
                            handler:function()
    						{
                                var nodesToCollapse = me.getStore().getRoot().childNodes;
                        
                                Ext.each(nodesToCollapse, function (node) {
                                    node.collapse();
                                });
                            }
                        }
Ответить с цитированием
  #3 (permalink)  
Старый 28.11.2018, 14:05
Аспирант
Отправить личное сообщение для Ambassador Посмотреть профиль Найти все сообщения от Ambassador
 
Регистрация: 12.11.2015
Сообщений: 46

Сообщение от siber-biber Посмотреть сообщение
вызывайте collapse (https://docs.sencha.com/extjs/6.5.2/...ethod-collapse) на записях которые должны остаться отображаемыми.
{
                            text: 'Collapse All',
                            handler:function()
    						{
                                var nodesToCollapse = me.getStore().getRoot().childNodes;
                        
                                Ext.each(nodesToCollapse, function (node) {
                                    node.collapse();
                                });
                            }
                        }
siber-biber - Спасибо

Что касаемо второго вопроса: "как можно реализовать скрытие дерева в handler кнопки, если она будет находиться не в initComponent: function()?", то сделал так:
{
        text: 'Развернуть',
        handler : function(button, e) {
        var tree    = button.up('questiontree')    
        tree.expandAll()
    	tree.resumeLayouts(true)  
            
    }
    },
    {
        text: 'Свернуть',
        handler:function(button, e)
        {
            var tree    = button.up('questiontree')
            var nodesToCollapse = tree.getStore().getRoot().childNodes
            Ext.each(nodesToCollapse, function (node) {
                node.collapse();
            });
            console.log(node)
        }
    }

Работает, но при нажатии на "Развернуть" в консоли предупреждение:
Mismatched call to resumeLayouts - layouts are currently not suspended

пер. Несоответствие вызова resumeLayouts - макеты в настоящее время не приостановлены .

При нажатии на "Свернуть" ошибка:
ReferenceError: node is not defined


Почему возникает предупреждение и ошибка?
Ответить с цитированием
  #4 (permalink)  
Старый 28.11.2018, 15:34
Интересующийся
Отправить личное сообщение для Swat2k Посмотреть профиль Найти все сообщения от Swat2k
 
Регистрация: 15.08.2017
Сообщений: 16

А зачем вызывать tree.resumeLayouts(true), что вы хотели сделать?
А по поводу свернуть, у вас не определена переменная node
Ответить с цитированием
  #5 (permalink)  
Старый 28.11.2018, 17:00
Аспирант
Отправить личное сообщение для Ambassador Посмотреть профиль Найти все сообщения от Ambassador
 
Регистрация: 12.11.2015
Сообщений: 46

Сообщение от Swat2k Посмотреть сообщение
А зачем вызывать tree.resumeLayouts(true), что вы хотели сделать?
Подумал что это необходимый метод для правильного рендеринга записей дерева после их развертывания.
Спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
добавить class только одному родителю что выше в дереве ufaclub jQuery 2 12.06.2017 22:47
Открывать только один textarea, другие скрывать. Salvat Events/DOM/Window 1 16.02.2017 08:18
Скрывать блок только на страницах 2 и 4 ур. вложенности natsdorf jQuery 1 23.10.2015 15:13
Элементарный подсчет и калькулятор PashaShulga Общие вопросы Javascript 5 14.03.2012 20:42