gpt4 book ai didi

javascript - Extjs - 遍历缓冲存储中显示记录的最佳方式

转载 作者:搜寻专家 更新时间:2023-11-01 05:23:06 25 4
gpt4 key购买 nike

因此,我正在从 EXT 4.1.1a 升级到 4.2.2,并且遇到了缓冲存储的问题。在 4.1.1a 中,我可以使用 store.each 遍历当前显示的商店记录,但在 4.2.2 中,我只是得到错误:

TypeError: Cannot read property 'length' of undefined

基本上在 store 对象中 data 属性不再有 items 属性,each 方法使用 length items 属性,因此出现错误。相反,商店中的元素似乎驻留在 data.map 中。我可以遍历 data.map 但似乎应该有更好的方法。文档只提到 store.each 作为执行此操作的方法,即使这对于缓冲存储似乎失败了。

我在附加到 GridView 的 refresh 监听器上遍历商店。

如有任何帮助,我们将不胜感激

最佳答案

显然他们认为您不能迭代存储,因为它具有“稀疏”数据,但事实并非如此。目前,您可以执行以下操作。

if(store.buffered) {
// forEach is private and part of the private PageMap
store.data.forEach(function(record, recordIdx) {
/* Do stuff with the record here */
}, this);
} else {
store.each(function(record) {
/* Do the same stuff I guess */
}, this);
}

重要

请注意,将来可能会更改商店的结构,这肯定会破坏您的代码。

此外,我坚信,如果使用了适当的设计模式,each 就必须处理循环而不用关心结构。

优化

当我初始化商店时,我通常会做以下事情:

if(store.buffered) {
store.iterate = store.data.forEach;
} else {
store.iterate = store.each;
}

然后你可以像这样使用它:

store.iterate(fn, scope);

这不是最好的决定,但简化了很多if语句的编写

关于javascript - Extjs - 遍历缓冲存储中显示记录的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23668013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com