Вопрос

Наконец, после борьбы с панелью Tree ExtJS, Tree Store и создания пользовательского считывателя для чтения и конвертации данных Pentaho в течение 2 недель мне удалось загрузить данные Pentaho в Treepanel of Extjs.

Теперь моя панель дерева бесконечно загружает те же данные. Трипанель выглядит следующим образом:

treepanl screen shot

Часть моих данных JSON выглядит следующим образом:

{
    {name: 'US', candidateCount: 3, children: []},
    {name: 'India', candidateCount: 922, children: [
       {name: 'Goa', candidateCount:124, children: []},
       {name: 'Maharashtra', candidateCount: 43, children: [
             {name: 'Pune', candidateCount: 3},
             {name: 'Mumbai', candidateCount: 33},
             {name: 'Kolhapur', candidateCount: 4},
             {name: 'XXX', candidateCount: 3},
        ]}
     ]},
    {name: 'UK', candidateCount: 1, children: []},
}

Как вы можете видеть на изображении выше, после расширения India Узел, он снова загрузил данные страны (т.е. называет страны США, Великобритания, Индия, Великобритания). На самом деле я хочу показать данные на уровне состояний, такие как данные о Махараштре, Гоа. Вместо этой Treepanel снова снова загружает те же данные.

Как избежать такого поведения? Я уже установил leaf собственность узлов США, Великобритании и Индии false.

Я пытался настройку Expanded собственность true Но затем Treepanel продолжает загружать одни и те же узлы снова и снова, и мой браузер просто повешается.

Пожалуйста, дайте мне знать, как избежать этого? Я хочу, чтобы панель дерева загружала данные только один раз.


Изменить - решение этой проблемы

Я решил эту проблему, добавив слушателя на append событие магазина, а затем настройка leaf ценность true Для узлов, которые я хотел быть листом.

Это было полезно?

Решение

Настройка элемента данных на:

{
    ...
    leaf: true
}

остановит это.

Другие советы

У меня была та же проблема с данными Treepanel и JSON. Мой тристор выглядит примерно так:

proxy: {
        type: 'ajax',
        url: 'urlJson',

        reader: {
            type: 'json',
            root: 'instanceList',
            successProperty: 'success'
        }
    },

    root:{
        text: 'Root',
        expanded: true
    }

И JSON

{
    "instanceList": [
        {
            "text": "Parent 1",
            "instanceList": [
                {
                    "class": "testing",
                    "id": 3,
                    "leaf": true,
                    "text": "Child 1"
                }
            ]
        },
        {
            "text": "Parent 2",
            "instanceList": [
                {
                    "class": "testing",
                    "id": 2,
                    "leaf": true,
                    "text": "Child 2"
                },
                {
                    "class": "testing",
                    "id": 1,
                    "leaf": true,
                    "text": "Child 3"
                }
            ]
        }
    ],
    "instanceTotal": 1,
    "success": true
}

Я сменил «детей» для «инстиссоров», и моя трипана перестала делать это бесконечно петлю, так что я думаю, если вы измените «имя» для «Дети»?

Загрузка деревьев может быть обманутой. Попробуйте настроить loaded: true на этих узлах. Прежде чем начать нажать вокруг, правильно ли загружено дерево?

Убедитесь, что все родители, у которых нет детей имеют «Лист» установлен на «Истинный» Или иметь Пустой узел "Дети".

А ТАКЖЕ Все детские узлы имеют «Лист» установлен на «Истинный» (Как уже упоминалось Аскен)

Мне кажется, что любой ребенок становится корнем для своих иждивенцев. Таким образом, корневое свойство и собственность детей должны иметь то же имя. Я очень рад, что нашел этот шаг. Это спасло мою жизнь, я собирался застрелить себя из -за бесконечной перезагрузки дерева

Как сказал Эдд, если вы установите в Proxy Custom RootProperty: «Инстистенс -инстистенс», вы должны изменить всех «детей» в JSON на эту собственность, то есть «инстистенс -инстистенс». Это было мое решение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top