2

私は 2.0 のコツをつかんでいますが、単純に見えるものに少しこだわっています。

基本的に、チームが使用する新しいアプリを作成しました (助けてくれてありがとう)。ダッシュボードにメッセージを追加できる方法があればいいなと思いました。

これを実現する最も簡単な方法は、ストーリーを作成し、コードでその 1 つのストーリーをクエリして、説明を取得し、それをアプリに表示することだと判断しました。簡単ですね。

説明フィールドを取得して表示するのに少し時間がかかります。奇妙に聞こえるかもしれませんが、とても複雑に思えます。私はこの方法を試しました

            showMessage: function (message) {
                debugger;
                this.add({
                    xtype: 'label',
                    html: message
                });
            },

            getMessage: function () {
                var defectStore = Ext.create('Rally.data.WsapiDataStore', {
                    model: 'UserStory',
                    fetch: ['Description'],
                    filters: [{
                        property: 'FormattedID',
                        operator: '=',
                        value: 'US13258'
                    }],
                    autoLoad: true,
                    listeners: {
                        load: function (store, records) {
                            debugger;
                            if (records)
                                return records[0].get("Description");
                        }
                    }
                });
            },

でもイベントスパゲティにハマりそうです。確かにもっと簡単な方法があります:)

特定のストーリーの説明フィールドを取得したいだけです...

4

2 に答える 2

0

リスナーを使用してそれを実行しようとしている理由はわかりませんが、次のように load を呼び出して、成功時に結果を取得するだけです。

getMessage: function (storyID) {
    var defectStore = Ext.create('Rally.data.WsapiDataStore', {
        model: 'UserStory',
        fetch: ['Description'],
        filters: [{
            property: 'FormattedID',
            operator: '=',
            value: storyID
        }],
        autoLoad: true
    });

    defectStore.load({scope: this, callback: function(records, operation, success) {
        if(success){
            console.log(records[0].get('Description')); // additional logic here
        } else {
            console.log('You ruined the store. Jerk.');
        }
    }});
}

ただし、extJS は非同期で動作するため、成功を確認した後に showMessage を呼び出さない限り、問題が発生する可能性があると思います。

于 2012-08-07T18:42:19.583 に答える