无法获得迭代'主题'在拉力赛应用程序(2.0RC3)

时间:2014-06-12 13:37:38

标签: rally appsdk2

我正在修改IterationSummary app from the 2.0RC3 SDK,并为其添加更多迭代信息。出于某种原因,虽然我能够从迭代对象中查询其他字段,但我无法检索迭代的“主题”。从样本开始,我只需添加以下行@ 192

{
    cls: 'theme',
    html: iteration.get('Theme')
},

我可以获得'Name'但是我无法获得'Theme'值,即使它在迭代中明确设置,我使用REST API验证该值以查询相同的迭代。查询“姓名”等其他字段效果很好。知道为什么'主题'没有被退回吗?

1 个答案:

答案 0 :(得分:0)

你取得主题' ?

您可能会看到一个一般示例,它构建一个迭代网格,该网格包含一个版本(在releasecombobox中选择),只要迭代中输入的主题位于this github repo,就会填充主题列。

此示例与IterationSummary应用程序不同,因为在我的示例中,我为Iteration对象显式创建了Rally.data.wsapi.Store并获取了主题。

自定义IterationSummary应用程序仍然需要显式获取主题字段,但您是正确的,从IterationSummary应用程序中获取其他字段的方式并不明显,例如迭代状态。该应用程序中的迭代对象从this.getContext().getTimeboxScope().getRecord()返回,如果您在控制台中打印出该对象,则主题将为空。 this.getContext().getTimeboxScope().getRecord()上存在的字段数量有限,无法根据性能原因进行自定义。

为了修改此应用以显示主题,必须访问迭代模型并显式获取主题。以下是我修改应用程序的步骤:

添加了getTheme功能:

getTheme: function(){ 
            var iteration = this.getContext().getTimeboxScope().getRecord();
            return iteration.self.load(iteration.getId(), {
                fetch: ['Theme']
            });
        }

在rc3中,每当我们有记录时,.self都会给出其模型,因此无需手动执行此操作

Rally.data.ModelFactory.getModel({
    type: 'Iteration',
    //... 

注意fetch: ['Theme']

接下来,在_addContent方法getTheme()内部调用

return Deft.Promise.all([this.getTheme(), this.calculateTimeboxInfo()]).then({
                success: function(results) {
                    var theme = results[0].get('Theme');

然后最后将主题变量的值传递给:

{
   cls: 'theme',
   html: theme
}

完整代码可在this github repo中找到。