从 4.1.1 升级到 4.2.1 后,我正在修复错误,并且现在已经被树视图卡住了一段时间。
应用程序首次启动(或页面刷新后)后组件的外观:
问题描述:主屏幕左侧有一个树形视图(类别),屏幕其余部分有一个网格(带有产品)。在我第一次打开屏幕后,树中的类别按预期显示。但是当我单击重新加载按钮时,它会再次加载树存储和网格存储 - 这里有些类别加倍(我猜所有二级节点都加倍)。AJAX 请求在每个请求上返回相同的数据。
甚至更奇怪的情况:如果我打开另一个组件然后返回到此屏幕,则呈现的类别完全混乱。
这是 JSON 响应(始终相同):
{
"user":{},
"data":{
"children":[
{
"category_apps":[{"name":"default text", "domain_id":"17"}],
"expanded":false,
"expandable":false,
"id":"category_with_unassigned_products",
"logo":"",
"children":[]},
{
"category_apps":[{"category_id":"8390","domain_id":"17","is_active":"1","name":"main category","name_type":"TEXT","url_path":"\/main-category"}],
"category_id":"8390",
"level":0,
"event_id":"1331",
"expanded":true,
"expandable":false,
"id":"main_category",
"logo":"\/media\/\/event\/1331\/categories\/8390_1376315425.jpg",
"image":"\/event\/1331\/categories\/8390_1376315425.jpg",
"children":[
{
"expanded":true,
"category_id":"8598",
"expandable":false,
"logo":"\/media\/\/event\/1331\/categories\/8598_1376315425.jpg",
"image":"\/event\/1331\/categories\/8598_1376315425.jpg",
"level":"1",
"children":[
{
"expanded":false,
"category_id":"8599",
"expandable":false,
"logo":"\/media\/\/event\/1331\/categories\/8599_1376315425.jpg",
"image":"\/event\/1331\/categories\/8599_1376315425.jpg",
"level":"2",
"children":[],
"category_apps":[{"category_id":"8599","domain_id":"17","is_active":"1","name":"sub subcategory","name_type":"TEXT","url_path":"\/main-category\/main\/sub-subcategory"}]
}
],
"category_apps":[{"category_id":"8598","domain_id":"17","is_active":"1","name":"main subcategory","name_type":"TEXT","url_path":"\/main-category\/main-subcategory"}]
}
]
}
]
}
}
这是负责附加子节点的代码 - 但在调试后我知道在处理根的第二个子节点(参见上面的 JSON)之后,树中的节点立即显示为双倍和/或一次混乱......
appendChildToRecord: function(child, record, store)
{
var data = {};
data[store.proxy.reader.root] = child;
var newRecords = store.proxy.reader.read(data).records;
record.appendChild(newRecords);
return newRecords[0];
}
非常感谢任何想法、想法和帮助!
更新:如果我将 ExtJS 切换回4.1.1版,树总是会正确加载 - 因此很明显,只有在切换到 4.2.1 版后才会出现问题。而且在调试时我什至无法揭示问题 - 在某些时候 main_category 的整个节点子树会立即呈现并搞砸了......
更新 2:通过调试整个树构建过程,我发现在重新加载类别时,它的子项以错误的顺序处理。通过处理,我的意思是采取了以下步骤:
- 获得第一级第一类
- 添加到根
- 过程
children
(递归,从第 1 点开始。) children
从该类别的来源中删除
在第一次加载时,类别以正确的顺序处理
- 第一类
- 第一类
- 第 2 类
- 第三类 lvl
- 第 2 类
- 第三类 lvl
- ...
- 第 2 类
在第二次和彼此加载时(不刷新浏览器窗口),顺序会更改 - 第一级的第二个类别作为最后一个处理,因此再次添加第二级类别,因此它们加倍。
所以问题是:为什么重新加载商店时类别(节点/记录)顺序会发生变化?我确信并检查了 JSON 响应没有改变并且总是相同的......