Javascript 抓取Rally中标记/标记的名称属性

Javascript 抓取Rally中标记/标记的名称属性,javascript,attributes,tags,rally,defects,Javascript,Attributes,Tags,Rally,Defects,我一直在研究rally对象模型,但我不知道如何获取缺陷标记的Name属性 我确保在fetch语句中包含Tag和Tags。我将所有缺陷存储到一个名为defectsNEWDEFECTS[]的对象数组中 我可以通过执行以下操作返回标记对象: tagNEWDEFECTS = defectsNEWDEFECTS[i].Tags; document.write(tagNEWDEFECTS); 将返回以下内容: [object Object] 但是,我似乎无法让它返回标签的名称。 我试过: 但它们都返回

我一直在研究rally对象模型,但我不知道如何获取缺陷标记的Name属性

我确保在fetch语句中包含Tag和Tags。我将所有缺陷存储到一个名为defectsNEWDEFECTS[]的对象数组中

我可以通过执行以下操作返回标记对象:

 tagNEWDEFECTS = defectsNEWDEFECTS[i].Tags;
document.write(tagNEWDEFECTS);
将返回以下内容:

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

但它们都返回“未定义”

你知道如何得到标签的名字吗?最终,这里的目标是让用户输入自定义标记,我可以在程序中标记这些标记来执行某些操作。例如,一个标记将命名为“RollOverDefect”

我需要能够确定哪些缺陷有一个名为“RollOverDefect”的标签


谢谢

标记是一个集合,因此最终需要在标记集合属性上嵌套一个循环来处理这个问题。嵌套到其他循环中后,可以通过以下方式引用标记名:

tagNEWDEFECTS=defectsNEWDEFECTS[i]。标记[j]。名称


希望这是有帮助的-让我们知道这是否完成了工作。

您可能会发现这个示例很有用:

<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>

应用程序示例:带有标签的缺陷

我明白你的意思,但我很难弄明白怎么做。在我脑子里想了一会儿这个代码之后,我会试着用更具体的评论重新发布。如果我将一个Tags对象放入索引0处的
tagNEWDEFECTS[]
中,则感谢您的提示:
tagsNEWDEFECTS[0]=defectsNEWDEFECTS[i]。Tags
那么,我应该这样做才能获取该标记集合中第一个标记的名称吗?:
tagsNEWDEFECTS[0]。Tags[0]。name
当我这样做时,我的javascript崩溃。再说一次,如果可能的话,我会尽量发表更为深思熟虑的评论,但由于某些原因,这篇评论实在让我难以理解。
<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>