Как остановить Treepanel Extjs бесконечно?
Вопрос
Наконец, после борьбы с панелью Tree ExtJS, Tree Store и создания пользовательского считывателя для чтения и конвертации данных Pentaho в течение 2 недель мне удалось загрузить данные Pentaho в Treepanel of Extjs.
Теперь моя панель дерева бесконечно загружает те же данные. Трипанель выглядит следующим образом:
Часть моих данных 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 на эту собственность, то есть «инстистенс -инстистенс». Это было мое решение.