Как остановить бесконечную загрузку extjs? - PullRequest
1 голос
/ 16 февраля 2012

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

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

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 в узел снова загружены данные уровня страны (т.е. названия стран США, Великобритании, Индии, Великобритании).На самом деле я хочу показать данные уровня штата, такие как данные Махараштры, Гоа.Вместо этого древовидная панель снова загружает те же данные.

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

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

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


РЕДАКТИРОВАТЬ - Решение этой проблемы

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

Ответы [ 6 ]

4 голосов
/ 28 февраля 2012

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

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
}

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

2 голосов
/ 16 февраля 2012

Установка элемента данных на:

{
    ...
    leaf: true
}

остановит его.

2 голосов
/ 16 февраля 2012

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

1 голос
/ 24 июля 2015

мне кажется, что любой ребенок становится корнем своих иждивенцев.Поэтому свойство root и свойство children ДОЛЖНЫ иметь одно и то же ИМЯ.Я очень рад, что нашел этот протектор.Это спасло мне жизнь, я собирался застрелиться из-за бесконечной перезарядки дерева

1 голос
/ 23 января 2013

Убедитесь, что у всех родителей, у которых нет детей , для "leaf" установлено значение "true" ИЛИ иметь пустой "дочерний" узел .

И все дочерние узлы имеют "leaf", установленный в "true" (как уже упоминалось Asken)

0 голосов
/ 26 августа 2014

Как сказал Эдд, если вы установили в прокси-сервере пользовательский rootProperty: 'instanceList', вы должны изменить все «потомки» в json на это свойство, то есть «instanceList».Это было мое решение.

...