2

我掌握了 2.0 的窍门,但有点卡在看似简单的东西上。

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

我决定完成此任务的最简单方法是创建一个故事,然后在我的代码中简单地查询那个故事,获取描述并在应用程序中显示它。听起来很容易对吧?

我有一点时间很简单,抓住描述字段并显示它。我知道这听起来很奇怪,但它看起来很复杂。我试过这种方式

            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

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');
            }
        });
    }
});
于 2012-08-07T15:32:09.867 回答
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 是异步操作的。

于 2012-08-07T18:42:19.583 回答