EXTjs 5个双重加载的树节点

问题描述 投票:3回答:4

我在ext5树上遇到很多麻烦,所以我想我要在这里发布文章,看看你们注意到了什么,并希望能帮助您解决这些5.0.0错误...

如果将TreeStore设置为TreeStore,它似乎将加载两次

autoload:true

。因此,它以某种方式复制了树形面板中显示的节点,从而导致各种问题/错误...

因此,在创建替代方法时,我将TreeStore设置为

autoload:false

并尝试在呈现视图后仅抓住商店并加载它。 [失败]。 TreeStore仅加载一次,但树实际上无法渲染。同样,除了将存储设置为不自动加载并将其放入控制器之外,什么都没有改变:

var s = Ext.getStore('myStore');
s.load();

没有树会被画...

因此,第二种解决方法(AWFUL解决方案)-让商店自动加载(带有两个代理调用),但是在树呈现之后,删除所有数据,然后再次手动加载商店。

(in the store)
...
autoload: true
...

(in the controller)
...
var s = Ext.getStore('myStore');
s.removeAll();
s.load();
...

Shazam!树加载了最后一次时间,并且只将数据表示一次!没有重复!

但是,现在所有的扩展和崩溃都被破坏了。没有事件触发,节点的展开和折叠都无法进行...。也许折叠/展开已被破坏?

设置自动加载:真,取出控制器代码。

TreeStore加载两次;树面板中的重复节点;展开/折叠工作正常。

extjs treeview extjs5
4个回答
3
投票

此后我找到了一种解决方法,而sencha可以“修复”此问题...

My Sencha Bug Report

这是我刚刚决定放入每个store的解决方法,因此再也不会发生这种情况:

...
listeners: {        
     beforeload: function (store, operation, eOpts) {            
          if(store.isLoading()) return false;        
     }    
}
...

通过添加它,没有商店将“加倍加载”。我们不得不将这种变通方法放入...中,这有点荒谬。

祝大家好运!


2
投票

不是商店,而是与树面板的交互。如果未加载商店,则TreePanel存在一些讨厌的问题。 Sencha论坛上有很多关于此的错误。


0
投票
var MenuStore = new Ext.data.TreeStore({
    storeId: 'MenuStore',
    model: 'BaseMenu',
    autoLoad: false,
    proxy: {
          type: 'ajax',
          url: '/menu.json'
    },
    root: {
        text: 'Menu',
        id: 'src',
        expanded: true,
        loaded:true
    }
});

0
投票

上面Avinash的答案(使用loading:true)实际上也解决了我面临的同样问题。建议的其他解决方法实际上都不是必需的。

© www.soinside.com 2019 - 2024. All rights reserved.