我想知道为什么ExtJS开发人员决定在ExtJS 4 Store API中删除reload()
方法。我认为这是一个糟糕的决定。
这是我的问题。我正在使用以下代码初始化网格的商店:
store.load({
params: {
paramName: dynamicParameter
}
});
注意上面代码中的dynamicParameter
变量。
然后,如果我从网格中删除一些记录,我需要重新加载商店。
问题是:重新加载商店的代码段不应该知道dynamicParameter
值。
删除记录的代码如下:
function deleteGridItems(grid, deleteUrl){
// get selected rows
var records = grid.getSelectionModel().getSelection();
// ...... (codes to send request for deletion is ignored) ......
if(success){
grid.getStore().reload();
}
}
不幸的是,上面的grid.getStore().reload()
会出错,因为在ExtJS 4中,reload()
函数不再存在。
那么如何使用相同的参数重新加载商店?
谢谢。
答案 0 :(得分:2)
如果我没有弄错,load()函数现在与reload()完全相同。试试吧。
你需要设置代理额外的参数,而不是每次在load()时指定它:
请参阅此http://www.sencha.com/forum/showthread.php?127673-Reload-Store-in-EXT-JS-4
答案 1 :(得分:0)
另请注意,Ext JS在加载之前似乎没有检查商店是否已加载数据。我不确定为什么会这样,但可以通过覆盖Store
或TreeStore
中的load()方法来修复。
load: function(options) {
// Loading quickly will cause data in the panel to break
if (!this.isLoading()) {
this.callParent(arguments);
}
},
我没有遇到过网格问题,但如果你很快按下刷新按钮就会出现问题,你有时会出错并且树状结构会中断:
Uncaught TypeError: Cannot read property 'internalId' of undefined