gpt4 book ai didi

javascript - Ext JS 树列表存储无限加载?

转载 作者:行者123 更新时间:2023-11-28 03:27:43 28 4
gpt4 key购买 nike

Ext js View

View 中有一个名为树列表的选项。当在树列表中使用一些静态数据时,它工作正常。当更改为从存储加载动态数据时,它不会加载。

Ext.define('Count.view.History', {
extend : 'Ext.Panel',
xtype : 'historyView',
controller : 'main',
requires : ['Count.store.History'],
width : '100%',
height : '100%',
title : 'History',
closable : true,
autoDestroy : true,
centered : true,
layout : 'fit',
fullscreen : true,
scrollable : true,
items :
[
{
xtype : 'tree',
store : 'History'

}
],
});

商店

Ext.define('Count.store.History', {
extend : 'Ext.data.TreeStore',
autoLoad : false,
alias : 'store.HistoryStore',
requires : ['Count.Db', 'Count.model.history'],
config :
{
model : 'Count.model.history'
},
loadData : function()
{
var meObj=this;
var sqlString = "SELECT tbl_list.ListName, tbl_list.MasterCount, tbl_sub_count.masterCountId, tbl_sub_count.subCount FROM tbl_list INNER JOIN tbl_sub_count ON tbl_list.Id=tbl_sub_count.masterCountID where tbl_sub_count.status='1';";
Count.Db.selectQuery(sqlString, meObj.callbackLoadData, meObj);
},

callbackLoadData : function(results, scope)
{

var store = scope;
var len = results.rows.length;
var MainListArray = {'root': {'expanded': true, 'children': []}};


var masterCountId = "";
var resultObj = "";
for (var i=0; i<len; i++)
{console.log(results);
if(masterCountId == "" || masterCountId != results.rows.item(i).masterCountId)
{
if(resultObj != "")
{
MainListArray.root.children.push(resultObj);
}
resultObj = {'ListName': results.rows.item(i).ListName, 'expanded': true, 'children': []}
masterCountId = results.rows.item(i).masterCountId;

var subListObj = {'subCount': results.rows.item(i).subCount, 'leaf': true}
resultObj.children.push(subListObj);
}
else
{
var subListObj = {'subCount': results.rows.item(i).subCount, 'leaf': true}
resultObj.children.push(subListObj);
}
}

if(resultObj != "")
{
MainListArray.root.children.push(resultObj);
}
console.log(MainListArray);
store.setData(MainListArray);

}
});

Controller

onShowHistory:function()
{

var showHistoryView = Ext.create('Count.view.History');
var storeHistory = Ext.create('Count.store.History');
storeHistory.loadData();
Ext.Viewport.add(showHistoryView);

}

但是当调用loadData函数时,存储数据会无限循环加载?

在回答几个解决方案之前,我尝试了所有解决方案。但这是行不通的。任何人请建议我对此有好的解决方案。

提前致谢。

最佳答案

如果没有可用的 fiddle ,我无法进行测试,无论如何,您似乎没有正确填充 TreeStore。

这里有一些更改可以帮助您正确加载/查看数据。首先尝试使用空根节点来初始化商店,并在商店配置中添加 root: {}。然后尝试使用setRoot而不是setData加载数据,更改

var MainListArray = {'root': {'expanded': true,  'children': []}};

var MainListArray = {'ListName': 'root', 'expanded': true, 'children': []};

然后

store.setData(MainListArray);

store.setRoot(MainListArray);

关于javascript - Ext JS 树列表存储无限加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58485764/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com