EXTJS--treestore getCount() 方法返回未定义,是否有任何替代方法来检查商店是否已经加载?

标签 extjs

我有一个卡片布局,在卡片“激活”事件上我加载了商店。为了防止每次激活该卡时加载商店,我检查是否 getCount == 0,如果为真,我加载商店:

handleActivateGrid: function(){

    if(this.myTreeGrid().getStore().getCount() == 0){
      this.myTreeGrid().getStore().load();
    }

我在我的代码的其他地方使用了同样的方法并且它工作得很好,唯一的区别是在这个例子中它是一个 Ext.data.TreeStore。

我调试后发现 getCount() 未定义,即使在商店加载之后也是如此。

我可以使用另一种方法或方法来实现上述内容吗?

谢谢

编辑:刚刚检查了文档,getCount() 不是 Ext.data.TreeStore 的方法,所以这解释了

最佳答案

A TreeStore由单个根节点和子节点组成。

查看根节点下是否有节点,可以使用如下

myTreeGrid().getStore().getRootNode().childNodes.length > 0

参见 http://docs-origin.sencha.com/extjs/4.2.2/#!/api/Ext.data.NodeInterface-property-childNodes

更正确的方法(因为理论上加载可能不会加载任何子节点)是连接一个 load event到商店,当它最初被创建时。在加载处理程序中,您可以在代码方便的地方设置您的 isLoaded 标志。

类似于 http://www.sencha.com/forum/showthread.php?91923-How-to-check-datastore-is-loaded/page2

var storeLoaded = false;
var store = Ext.create('Ext.data.TreeStore', {
    proxy: {
        type: 'ajax',
        url: 'get-nodes.php'
    },
    root: {text: 'Ext JS',id: 'src', expanded: true},
    listeners: {
       load: function() {
          storeLoaded = true;
       }
    }
 });

 var tree = Ext.create('Ext.tree.Panel', {
    store: store,
    renderTo: 'tree-div',
    height: 300,
    width: 250,
    title: 'Files'
 });

关于EXTJS--treestore getCount() 方法返回未定义,是否有任何替代方法来检查商店是否已经加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25489511/

相关文章:

javascript - Gridpanel 没有在 Ext js 4.0.7 的视口(viewport)内显示我的代码有什么问题

javascript - 在 ExtJS 中为超链接添加一个监听器

javascript - 外部网格中的分页

javascript - 选择下拉菜单不与父 Div 重叠

javascript - ExtJs 表格布局边框缺失和单元格颜色

javascript - Extjs 4.2 创建一个全局数据错误处理,它将被实现覆盖

sencha-touch - 卡片布局 setActiveItem 未触发

javascript - 在 Sencha Touch selectfield 中填充图标

javascript - ExtJS 数字字段中的 6 千分隔符

javascript - 如何从控制台访问 extjs Controller