1

編集 - 回答が見つかりました

うまくいかない理由がわかりました。私が読んでいた「フィルター」構成フィールドは、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 番目のフィルター関数を使用することもできます。スコープ変数が必要であり、フィルター処理はサーバー側で行われるためです。スコープ変数は保存されていますか?

サーバー側でフィルタリングされているため、コンソールログをフィルター機能に入れることができないため、これらに対する答えがわかりません。

4

1 に答える 1