拉力赛App2.0 - 检索特定故事

时间:2012-08-07 13:12:42

标签: rally agile-central

我已经掌握了2.0,但有点卡在看似简单的事情上。

基本上,我已经为我的团队创建了一个新的应用程序(感谢大家的帮助)。我认为有一种方法可以将信息添加到仪表板,这很酷。

我决定实现这一目标的最简单方法是创建一个故事,并在我的代码中简单地查询一个故事,获取描述并在应用程序中显示它。听起来很容易吧?

我有一点时间简单地跑出去抓取Description字段并显示它。我知道这听起来很奇怪,但看起来很复杂。我试过这种方式

            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");
                        }
                    }
                });
            },

但似乎陷入事件意大利面。当然有一种更简单的方法:)

只想抓住特定的故事描述字段......

2 个答案:

答案 0 :(得分:1)

您可以使用模型的加载方法来执行此操作:

var storyOid = 12345;

//Get the story model
Rally.data.ModelFactory.getModel({
    type: 'UserStory',
    success: function(model) {

        //Load the specific story
        model.load(storyOid, {
            fetch: ['Description']
            success: function(record) {

                //success!
                var description = record.get('Description');
            }
        });
    }
});

答案 1 :(得分: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.');
        }
    }});
}

我认为你可能会遇到一些问题,除非你检查成功后调用showMessage,因为extJS是异步操作的。