3

我在使用 ext5 树时遇到了很多麻烦,所以我想我会在这里发帖,看看你们注意到了什么,希望能帮助您解决这些 5.0.0 错误...

如果我将 TreeStore 设置为

autoload:true

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

因此,在创建解决方法时,我将 TreeStore 设置为

autoload:false

并试图在视图渲染后抓取商店并加载它。[失败]。TreeStore 仅加载一次,但树未能实际呈现。同样,除了将 store 设置为不自动加载并将其放入控制器之外,没有任何更改:

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();
...

沙赞!树最后一次加载,数据只表示一次!没有重复!!

然而,现在所有的扩展和崩溃都被打破了。没有事件触发,没有节点的扩展和折叠工作......也许折叠/扩展已经被破坏了?

设置autoload:true,取出控制器代码。

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

4

3 回答 3

3

从那以后,我找到了一种解决方法,而 sencha “修复”了这个问题......

我的煎茶错误报告

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

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

通过添加这个,任何商店都不会“双重加载”。我们必须将这种类型的解决方法放在...中,这有点荒谬

祝大家好运!

于 2014-08-01T16:06:04.577 回答
2

这不是商店,而是与树面板的交互。如果商店未加载或未加载,TreePanel 会出现一些令人讨厌的问题。Sencha 论坛上有很多关于它的错误。

我使用的解决方法是创建存储,加载它,然后在加载返回之前将其插入 TreePanel。

如果在将其插入 TreeStore 后调用 load,则根节点不正确,并且存储无法呈现。

通过beforeload事件停止加载将阻止您对树存储进行部分加载,您可以在其中扩展每个节点。

于 2014-08-01T23:27:40.293 回答
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
    }
});

设置加载:真正解决我的问题。

这对我有用。

于 2015-12-29T14:33:14.457 回答