你可以拿回缺陷是这样的:
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