你可以拿回缺陷是這樣的:
var defects = story.getCollection('Defects');
這裏是使用2.0rc1並訪問用戶故事中的缺陷集合的完整代碼。在代碼中,我構建了一個網格,但訪問該集合的部分有望提供幫助。
Ext.define('CustomApp', {
extend: 'Rally.app.App',
componentCls: 'app',
launch: function() {
Ext.create('Rally.data.WsapiDataStore', {
model: 'UserStory',
fetch: ['FormattedID','Name','Defects'],
pageSize: 100,
autoLoad: true,
listeners: {
load: this._onDataLoaded,
scope: this
}
});
},
_createGrid: function(stories) {
this.add({
xtype: 'rallygrid',
store: Ext.create('Rally.data.custom.Store', {
data: stories,
pageSize: 100
}),
columnCfgs: [
{
text: 'Formatted ID', dataIndex: 'FormattedID'
},
{
text: 'Name', dataIndex: 'Name'
},
{
text: 'Defect Count', dataIndex: 'DefectCount'
},
{
text: 'Defects', dataIndex: 'Defects', flex: 1, emptyCellText: 'zero',
renderer: function(value) {
if (value) {
return value.join(',');
}
}
}
]
});
},
_onDataLoaded: function(store, data){
var stories = [];
var pendingDefects = data.length;
Ext.Array.each(data, function(story) {
var s = {
FormattedID: story.get('FormattedID'),
Name: story.get('Name'),
DefectCount: story.get('Defects').Count,
Defects: []
};
var defects = story.getCollection('Defects');
defects.load({
fetch: ['FormattedID'],
callback: function(records, operation, success){
Ext.Array.each(records, function(defect){
s.Defects.push(defect.get('FormattedID'));
}, this);
--pendingDefects;
if (pendingDefects === 0) {
this._createGrid(stories);
}
},
scope: this
});
stories.push(s);
}, this);
}
});
謝謝凱爾,這個工作,但是,我希望有更多的順序答案,這讓我不同步,而我的自定義信息寫入卡。我將不得不修改一些代碼,以允許回調在這一個上工作。標記爲正確的,因爲這是你現在必須得到缺陷的方式。 – user1537867
是的,我們仍在學習圍繞此API的方式。 GA版本的SDK應該支持promise,所以你可以用更同步的風格編寫很多這樣的異步代碼。另外,下面是最近發佈的關於WSAPI 2.x集合的指南:http://developer.help.rallydev.com/apps/2.0rc1/doc/#!/guide/collections_in_v2 –
Kyle,這非常有幫助。當我嘗試從一個Changeset中取出Artifacts集合時出現問題:'record.getCollection('Artifacts')。load(....'記錄作爲查詢返回到Changeset上,我得到一個'Uncaught指定了無效的模型類型:Artifact'。是否有可能像這樣撤回一個通用的Artifacts集合? – 2013-07-02 17:38:54