下次用户在 ExtJS6 中与它交互时,如何制作组合以重新加载其商店?
How to make a combo to reload its store the next time a user interacts with it in ExtJS6?
我有一个由 ajax 商店支持的简单组合框。我正在根据表单中的其他字段修改这家商店的 proxy.extraParams
。
问题是当我修改商店后用户按下向下箭头按钮时,以前的组合选项没有重置,就好像组合不知道它的商店已被更改一样。有没有办法让组合在下次用户与之交互时重新加载其存储?
目前,我每次修改存储参数时都会手动执行 combo.getStore().load()
,但这会导致不必要的 ajax 调用。也许用户甚至不会再与该组合框交互,我只想在用户与组合字段交互时重新加载商店。
嗯,你可以看看 ExtJS combo code:
// If they're using the same value as last time (and not being asked to query all),
// and the filters don't need to be refreshed, just show the dropdown
if (me.queryCaching && !refreshFilters && queryPlan.query === me.lastQuery) {
// The filter changing was done with events suppressed, so
// refresh the picker DOM while hidden and it will layout on show.
me.getPicker().refresh();
me.expand();
}
// Otherwise filter or load the store
else {
me.lastQuery = queryPlan.query;
if (me.queryMode === 'local') {
me.doLocalQuery(queryPlan);
} else {
me.doRemoteQuery(queryPlan);
}
}
因为 queryCaching:false
如果没有任何更改会导致不必要的调用,我想你最好的选择是 combo.lastQuery = null;
.
您可以在每次用户展开组合框时重新加载商店:
listeners: {
expand: function() {
this.getStore().load();
}
}
我有一个由 ajax 商店支持的简单组合框。我正在根据表单中的其他字段修改这家商店的 proxy.extraParams
。
问题是当我修改商店后用户按下向下箭头按钮时,以前的组合选项没有重置,就好像组合不知道它的商店已被更改一样。有没有办法让组合在下次用户与之交互时重新加载其存储?
目前,我每次修改存储参数时都会手动执行 combo.getStore().load()
,但这会导致不必要的 ajax 调用。也许用户甚至不会再与该组合框交互,我只想在用户与组合字段交互时重新加载商店。
嗯,你可以看看 ExtJS combo code:
// If they're using the same value as last time (and not being asked to query all),
// and the filters don't need to be refreshed, just show the dropdown
if (me.queryCaching && !refreshFilters && queryPlan.query === me.lastQuery) {
// The filter changing was done with events suppressed, so
// refresh the picker DOM while hidden and it will layout on show.
me.getPicker().refresh();
me.expand();
}
// Otherwise filter or load the store
else {
me.lastQuery = queryPlan.query;
if (me.queryMode === 'local') {
me.doLocalQuery(queryPlan);
} else {
me.doRemoteQuery(queryPlan);
}
}
因为 queryCaching:false
如果没有任何更改会导致不必要的调用,我想你最好的选择是 combo.lastQuery = null;
.
您可以在每次用户展开组合框时重新加载商店:
listeners: {
expand: function() {
this.getStore().load();
}
}