1

编辑 - 找到答案

我意识到为什么它不起作用。我正在阅读的“过滤器”配置字段基于 Ext.data.AbstractStore 类的配置,而不是 Rally 的 Rally.data.wsapi.Store 配置。Rally 不支持过滤器“函数”,因为所有 Rally.data.wsapi.Store 过滤器都变成了 wsapi 查询语法(我在 SDK 指南中读到了),而您无法使用函数执行此操作。这就是为什么他们只接受 Object[] 参数,而不是 Function[] 参数。

因此,如果我错了,请纠正我,但我认为 wsapi 商店的文档对于“过滤器”配置字段是错误的。


我正在尝试使用自定义过滤器功能从用户故事列表中加载功能。我的问题是了解过滤器功能如何为商店配置工作。现在我有:

_loadFeatures: function(cb){ 
    var me = this;
    Ext.create('Rally.data.wsapi.Store',{
        model: 'PortfolioItem/Feature',
        autoLoad:true,
        start: 0,
        pageSize: 20,
        fetch: //stuff
        context: //stuff
        filters:[
            function(feature){ return false; },
            function(feature){
                return feature.get('Release').Name == me.releaseRecord.get('Name');
            },
            function(feature){
                var oid = feature.get('ObjectID');
                var rs = me.StoryStore.getRecords();
                for(var i = 0;i<rs.length;++i){
                    var r = rs[i];
                    if(r.get('Feature') && r.get('Feature').ObjectID == oid) 
                        return true;
                }
                return false;
            }
        ],
        listeners: //stuff
    });
},

有几件事让我感到困惑:

1) 我的一个函数无论如何都返回 false,我认为它应该返回 NO 结果。然而,商店返回所有功能,就像根本没有过滤器一样(它返回结果的第一页,但页面包含所有功能)

2)我们可以将过滤函数中的参数作为'records'或records'数据,类似于record.data。我的意思是我应该使用record.get('ObjectID') 还是record.ObjectID。

3)我什至可以使用上面的第三个过滤器功能,因为它需要作用域变量,并且过滤是在服务器端完成的。范围变量是否保留?

我不知道这些问题的答案,因为我无法将控制台日志放入过滤器功能中,因为它们是经过过滤的服务器端。

4

1 回答 1

0

在服务器上加载并远程过滤存储后,您还可以在客户端进一步过滤存储:

http://help.rallydev.com/apps/2.0rc3/doc/#!/api/Ext.data.Store-method-filterBy

于 2014-07-18T22:12:04.323 回答