編集 - 回答が見つかりました
うまくいかない理由がわかりました。私が読んでいた「フィルター」構成フィールドは、Rally の Rally.data.wsapi.Store 構成ではなく、Ext.data.AbstractStore クラスの構成に基づいていました。Rally は、すべての Rally.data.wsapi.Store フィルターが wsapi クエリ構文に変換されるため、フィルター '関数' をサポートしていません (SDK ガイドでそれを読みました)。これは、関数では実行できません。そのため、Function[] 引数ではなく、Object[] 引数のみを受け入れます。
間違っている場合は訂正してください。ただし、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 を返す関数の 1 つで、NO の結果を返すべきだと思います。それでも、フィルタがまったくなかったように、ストアはすべての機能を返します (結果の最初のページを返しますが、ページにはすべての機能が含まれています)。
2) record.data と同様に、フィルタ関数のパラメータを「レコード」またはレコードのデータとして処理できますか。つまり、record.get('ObjectID') または record.ObjectID を使用する必要があります。
3) 上記の 3 番目のフィルター関数を使用することもできます。スコープ変数が必要であり、フィルター処理はサーバー側で行われるためです。スコープ変数は保存されていますか?
サーバー側でフィルタリングされているため、コンソールログをフィルター機能に入れることができないため、これらに対する答えがわかりません。