這對於App SDK 2.0來說是相對直接的。在文檔中下面的例子應該對您有所幫助:
http://developer.rallydev.com/apps/2.0p4/doc/#!/guide/appsdk_20_data_models
http://developer.rallydev.com/apps/2.0p4/doc/#!/guide/appsdk_20_data_stores
這裏有一個快速的小的代碼片段獲取特定故事的修訂歷史:
Rally.data.ModelFactory.getModel({
type: 'UserStory',
success: function(storyModel) {
var storyRef = 'https://rally1.rallydev.com/slm/webservice/1.37/hierarchicalrequirement/12345.js';
var storyID = Rally.util.Ref.getOidFromRef(storyRef);
storyModel.load(storyID, {
fetch: ['Name', 'FormattedID', 'Description', 'RevisionHistory', 'Revisions'],
callback: function(story, operation) {
if(story && story.get('RevisionHistory') && story.get('RevisionHistory').Revisions) {
Ext.Array.each(story.get('RevisionHistory').Revisions, function(revision) {
//Parse revision log
});
}
}
});
}
});
的使用SDK的好處在於它會根據您運行應用程序的方式自動執行ajax與jsonp請求。上面的例子對於單個故事很有用。如果你想通過多篇文章解析你想使用一個店,而不是model.load的:
Ext.create('Rally.data.WsapiDataStore', {
model: 'UserStory',
autoLoad: true,
fetch: ['Name', 'FormattedID', 'Description', 'RevisionHistory', 'Revisions'],
listeners: {
load: function(store, stories) {
Ext.Array.each(stories, function(story) {
if(story && story.get('RevisionHistory') && story.get('RevisionHistory').Revisions) {
Ext.Array.each(story.get('RevisionHistory').Revisions, function(revision) {
//Parse revision log
});
}
});
}
}
});
的數據存儲方法是什麼,我以後,雖然story.RevisionHistory.Revisions似乎永遠不會存在。我最接近的是story.data.RevisionHistory,它在FireBug中可以看到具有屬性:_rallyAPIMajor,_rallyAPIMinor,_ref和_type。使用_ref字段讓我回到我開始的地方。我是否需要在查詢中添加一些內容以獲取story.RevisionHistory.Revisions? –
似乎已經回答了我自己的問題。需要將第一個查詢中的「fetch」行添加到第二個;)感謝您的幫助Kyle! –
哎呀!接得好。我更新了第二個代碼示例是正確的。 –