2012-10-02 4 views
3

Я хотел бы получить объект JSON для журнала изменений, используя URL-адрес, связанный с пользовательской историей. Я выполнил это с помощью jQuery, используя следующий код, хотя я бы предпочел сделать это со встроенными инструментами в Rally SDK. Мне не повезло с запросами Ext.Ajax или Ext.data.JsonP, хотя я считаю, что это правильный подход. Любая помощь будет оценена по достоинству.Запрос на изменение истории пользователей в ралли

$.ajax({ 
    url: URL, 
    dataType: 'jsonp', 
    jsonp: 'jsonp', 
    success: function(response) { 
     $.each(response.RevisionHistory.Revisions, function(key, rev) { 
      //Parse Revision Log 
     }); 
    } 
}); 

ответ

2

Это относительно просто с 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 
        }); 
       } 
      }); 
     } 
    } 
}); 
+0

Датастор подход, что я после, хотя story.RevisionHistory.Revisions кажется, никогда не существовало. Самое близкое, что у меня есть, это story.data.RevisionHistory, который в FireBug, который я вижу, имеет свойства: _rallyAPIMajor, _rallyAPIMinor, _ref и _type. Использование поля _ref возвращает меня туда, где я начал. Нужно ли добавлять что-то к запросу, чтобы получить историю. RevisionHistory.Revisions? –

+0

Казалось, ответил на мой вопрос. Нужно добавить строку «выборки» от первого запроса ко второй;) Спасибо, как всегда за вашу помощь Кайл! –

+0

Упс! Хороший улов. Я обновил второй пример кода, чтобы быть правильным. –

Смежные вопросы