Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs Ext.data.Store';s each()正在忽略筛选的记录_Extjs_Extjs4.1_Extjs Stores - Fatal编程技术网

Extjs Ext.data.Store';s each()正在忽略筛选的记录

Extjs Ext.data.Store';s each()正在忽略筛选的记录,extjs,extjs4.1,extjs-stores,Extjs,Extjs4.1,Extjs Stores,我正在使用Ext.data.Store的。但这种方法在对存储进行过滤时,只在过滤后的记录上循环。我们是否有任何其他方法或解决方法来循环一个存储的所有记录,即使在存储上应用了过滤器 var attStore = Ext.getStore("myStore"); var allRecords = attStore.snapshot || attStore.data; allRecords.each(function (record) { i

我正在使用Ext.data.Store的。但这种方法在对存储进行过滤时,只在过滤后的记录上循环。我们是否有任何其他方法或解决方法来循环一个存储的所有记录,即使在存储上应用了过滤器

  var attStore = Ext.getStore("myStore");
        var allRecords = attStore.snapshot || attStore.data;
        allRecords.each(function (record) {
            if (record.data.IsUpdated) {
                record.set('updatedByUser', true);
            }
            else {
                record.set('updatedByUser', false);
            }
             record.commit();
        });
var allRecords=attStore.snapshot | | attStore.data
实际上会按预期返回所有记录,但当我尝试更新该记录(或使用record.data.property=something更新该记录中的某个属性)时,该记录不会得到更新

谢谢你用这个

var allRecords = store.snapshot || store.data;
然后像这样循环

allRecords.each(function(record) {
    console.log(record);
});

请参见Sencha Touch 2.3上的此内容。我需要执行以下操作以绕过过滤器

var allRecords = store.queryBy(function(){return true;});

allRecords.each(function(r){
    doStuff();
});

从ExtJS5开始,使用以下命令

Ext.data.Store.each( fn, [scope], [includeOptions] )
i、 e


可以使用getStore().getDataSource().each(函数(r){});函数获取所有数据,甚至存储

我尝试了您刚才共享的代码。但即使allRecords.length返回230条记录,该记录仍为空。还有什么我需要做的吗?对不起,我的错误,store.snapshot retunrs mixed util collection,因此您需要使用此方法而不是ext each。请使用ext.util.MixedCollection.each()共享代码片段谢谢您的回复。我刚刚更新了我的问题。var allRecords=attStore.snapshot | | attStore.data;正在将所有记录返回给我,但我无法更新记录。extjs 5存储不再有快照:这种方法不适用于较新版本。如何将筛选器应用于存储?@Riku:我使用以下代码:storeName.filter('fieldName',value);如果更新不起作用,您可以尝试此工作区。清除存储筛选器,应用更改,然后再次应用筛选器。在这种情况下,您不需要使用store.snapshot和store.each,它们将返回您所有的记录,我认为应该可以使用。@Riku:谢谢您的快速回复。我知道这是一种变通方法,但我希望Sencha能提供一些现成的方法。再次感谢您的帮助。这在ExtJS5.1中似乎不起作用。此外,API文档中没有提到类似的内容。看起来文档中有一个错误,5.1.2又出现了,那么我错了。。。令人惊叹的!谢谢你指出这一点。这是一个该死的笑话-6.0.1不拥有它,6.0.2再次拥有它。我想他们最近添加了它早期的版本往往是非常错误和不完整的。我通常会等到x.1版本发布后再升级ExtJS7.2。
Ext.data.Store.each( fn, [scope], [includeOptions] )
store.each(function(record) {
    // ...
}, scope, {filtered: true});