我在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加载两次;树面板中的重复节点;展开/折叠工作正常。
此后我找到了一种解决方法,而sencha可以“修复”此问题...
这是我刚刚决定放入每个store的解决方法,因此再也不会发生这种情况:
...
listeners: {
beforeload: function (store, operation, eOpts) {
if(store.isLoading()) return false;
}
}
...
通过添加它,没有商店将“加倍加载”。我们不得不将这种变通方法放入...中,这有点荒谬。
祝大家好运!
不是商店,而是与树面板的交互。如果未加载商店,则TreePanel存在一些讨厌的问题。 Sencha论坛上有很多关于此的错误。
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
}
});
上面Avinash的答案(使用loading:true)实际上也解决了我面临的同样问题。建议的其他解决方法实际上都不是必需的。