2013-05-16 126 views
0

我一直在寻找拉力赛对象模型,但我无法弄清楚如何抓取缺陷标签的名称属性。在拉力赛中抓取标签/标签的名称属性

我确保在我的fetch语句中包含标签和标签。我存储所有缺陷为对象的数组称为defectsNEWDEFECTS []

我可以做这个返回Tag对象:

tagNEWDEFECTS = defectsNEWDEFECTS[i].Tags; 
document.write(tagNEWDEFECTS); 

将返回此:

[object Object] 

但是,我似乎无法让它返回标签的名称。 我试过了:

tagNEWDEFECTS = defectsNEWDEFECTS[i].Tags.Name; 
tagNEWDEFECTS = defectsNEWDEFECTS[i].Tags.Tag.Name; 
tagNEWDEFECTS = defectsNEWDEFECTS[i].Tag.Name; 

但是他们都返回'undefined'。

任何想法如何获得标签的名称?最终,这里的目标是拥有用户输入的自定义标签,我可以在我的程序中标记以执行某些操作。例如,一个标签将被命名为“RollOverDefect”。

我需要能够确定哪些缺陷有一个叫做“RollOverDefect”

感谢标签!

回答

1

标签是一个集合,所以您最终需要在标签集合属性上的嵌套循环来处理这个问题。一旦你嵌套到一个额外的循环,你可以通过引用标记名称:

tagNEWDEFECTS = defectsNEWDEFECTS[i].Tags[j].Name;

希望这是有帮助的 - 让我们知道如果能够完成任务。

+0

我明白你在说什么,但我有一个很难搞清楚如何做到这一点。 –

+0

在我与这段代码进行了一场大脑搏斗之后,我会尝试重新发布更具体的评论。谢谢你的提示 –

+0

所以,如果我把一个标签对象到'tagNEWDEFECTS []'在索引0 这样的: 'tagsNEWDEFECTS [0] = defectsNEWDEFECTS [I] .tags添加;' 那么我应该能够得到这个标签集合中的第一个Tag的名称是这样吗?: 'tagsNEWDEFECTS [0] .Tags [0] .Name' 当我这样做时,我的JavaScript崩溃了。再次,当我可以的时候,我会尽量发表更多深思熟虑的评论,但由于某种原因,这真的很难包围我的头。 –

0

你会发现这个例子是有用的:

<html> 
<head> 
<title>App Example: Defects with Tags</title> 
<meta name="Name" content="App Example: Defects with Tags" /> 
<meta name="Version" content="2013.2" /> 
<meta name="Vendor" content="Rally Labs" /> 
<script type="text/javascript" src="/apps/1.33/sdk.js?apiVersion=1.43""></script> 
<script type="text/javascript"> 

    var table = null; 

    function defectsWithTagsExample() { 
     var rallyDataSource = new rally.sdk.data.RallyDataSource('__WORKSPACE_OID__', 
      '__PROJECT_OID__', 
      '__PROJECT_SCOPING_UP__', 
      '__PROJECT_SCOPING_DOWN__' 
     ); 

     function itemQuery() { 
      var queryObject = { 
       key: 'defects', 
       type: 'Defect', 
       fetch: 'FormattedID,Name,State,Description,Tags,Name', 
       query: '(State = "Submitted")' 
      }; 
      rallyDataSource.findAll(queryObject, populateTable); 
     } 

     function populateTable(results) { 

      if (table) { 
       table.destroy(); 
      } 

      var tableDiv = document.getElementById('aDiv'); 

      var config = { 
       'columnKeys' : ['FormattedID', 'Name', 'Description', 'State', 'Tags'], 
       'columnHeaders' : ['FormattedID', 'Name', 'Description', 'State', 'Tags'], 
       'columnWidths' : ['100px',  '400px', '200px',  '85px', '300px'] 
      }; 

      table = new rally.sdk.ui.Table(config); 
      table.addRows(results.defects); 

      for (i=0;i<results.defects.length;i++) { 

       myDefect = results.defects[i]; 
       myTags = results.defects[i].Tags; 
       myTagString = ""; 

       for (j=0;j<myTags.length;j++) { 
        myTag = myTags[j]; 
        myTagName = myTags[j].Name; 
        if (j == 0) { 
         myTagString += myTagName; 
        } else { 
         myTagString += ", " + myTagName; 
        } 
       } 

       linkConfig = {item: {FormattedID: myDefect.FormattedID, "_ref" : myDefect._ref}}; 
       defectLink = new rally.sdk.ui.basic.Link(linkConfig); 

       table.setCell(i, 0, defectLink.renderToHtml()); 
       table.setCell(i, 4, myTagString); 
      } 

      table.display(tableDiv); 

     }; 

     itemQuery(); 
    } 

    rally.addOnLoad(defectsWithTagsExample); 
</script> 
</head> 
<body> 
<div id="aDiv"></div> 
</body> 
</html> 
+0

完美,谢谢! –