我已经掌握了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");
}
}
});
},
但似乎陷入事件意大利面。当然有一种更简单的方法:)
只想抓住特定的故事描述字段......
答案 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是异步操作的。