编辑 - 找到答案
我意识到为什么它不起作用。 '过滤器'我正在阅读的配置字段是基于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个过滤函数,因为它需要范围变量,和 过滤是在服务器端完成的。是否保留了范围变量?。
我不知道这些答案,因为我无法将控制台日志放入过滤器功能,因为它们是过滤服务器端。
答案 0 :(得分:0)
在服务器上加载并远程过滤后,您仍可以在客户端进一步过滤商店:
http://help.rallydev.com/apps/2.0rc3/doc/#!/api/Ext.data.Store-method-filterBy