编辑-答案找到
我明白为什么不起作用了。我正在阅读的“filters”配置字段是基于Ext.data.AbstractStore类的配置,而不是Rally的Rally.data.wsapi.Store配置。read不支持过滤器的“函数”,因为所有的Rally.data.wsapi.Store过滤器都被转换成wsapi语法(我在SDK指南中读过),这是函数不能做的。这就是为什么他们只接受Object[]参数,而不是Function[]参数。
所以,如果我错了,请纠正我,但是我相信wsapi的文档对于“filters”配置字段是错误的。
我正在尝试使用自定义的过滤器功能从用户故事列表中加载功能。我的问题是理解过滤器函数是如何用于存储配置的。现在我有:
_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)我的一项职能,无论发生什么,都是假的,我认为不应该返回任何结果。然而,商店返回所有的功能,就像根本没有过滤器一样(它返回结果的第一页,但页面包含所有功能)
( 2)能否将滤波函数中的参数处理为类似于record.data的“记录”或记录数据。我的意思是我应该使用record.get('ObjectID')还是record.ObjectID。
3)甚至可以使用上面的第三种过滤函数,因为它需要范围变量,并且过滤是在服务器端进行的。范围变量是否保留?
我不知道这些问题的答案,因为我不能将控制台日志放在过滤器函数中,因为它们是过滤服务器端的。
发布于 2014-07-18 22:12:04
在客户端加载并在服务器上进行远程筛选之后,您还可以进一步过滤客户端的存储:
http://help.rallydev.com/apps/2.0rc3/doc/#!/api/Ext.data.Store-method-filterBy
https://stackoverflow.com/questions/24815056
复制相似问题