wsapi商店的过滤功能无法在Rally SDK中使用

时间:2014-07-17 23:17:55

标签: javascript rally appsdk2

编辑 - 找到答案

我意识到为什么它不起作用。 '过滤器'我正在阅读的配置字段是基于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)我们可以将过滤函数中的参数作为&#39;记录&#39;或记录&#39;数据,类似于record.data。我的意思是我应该使用record.get(&#39; ObjectID&#39;)还是record.ObjectID。

3)我甚至可以使用上面的第3个过滤函数,因为它需要范围变量,和 过滤是在服务器端完成的。是否保留了范围变量?。

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

1 个答案:

答案 0 :(得分:0)

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

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