0

我正在编写一个用于工作项跟踪的 VSTS 仪表板小部件

但是,我在使用 getWorkItem() 函数时遇到了问题。我想获取给定史诗下所有功能的ID(我已经知道史诗 ID)。我相信如果我将getWorkItem()的扩展参数设置为“全部”,我将获得所有功能及其各自 ID 的列表。不幸的是,我不知道如何定义扩展参数的“类型”以及如何正确地将其作为值传递给 getWorkItem() 函数。

这是我的代码:

VSS.require(["VSS/Service", "TFS/Dashboards/WidgetHelpers", "TFS/WorkItemTracking/RestClient"],
        function (VSS_Service, WidgetHelpers, TFS_Wit_WebApi) {
            WidgetHelpers.IncludeWidgetStyles();
            VSS.register("myapp", function () {
                var fetchData = function (widgetSettings) {
                    const epicID = 123456;
                    // Get a WIT client to make REST calls to VSTS
                    return VSS_Service.getCollectionClient(TFS_Wit_WebApi.WorkItemTrackingHttpClient).getWorkItem(123456, null, null, All).
                        then(
                            //Successful retrieval of workItems
                            function (workItems) {
                                $('#myText').text(JSON.stringify(workItems));
                                console.log(workItems);
                                // Use the widget helper and return success as Widget Status
                                return WidgetHelpers.WidgetStatusHelper.Success();
                            },
                            function (error) {
                                // Use the widget helper and return failure as Widget Status
                                return WidgetHelpers.WidgetStatusHelper.Failure(error.message);
                            });
                }

Here is the VSTS reference for expand 它解释了值可以是什么,但没有说明如何将其传递给 getWorkItem() 函数。

我想将函数的可选扩展参数设置为“全部”,但不知道它的类型以及如何正确定义和使用它。

4

2 回答 2

0

使用枚举很好,但您也可以从“TFS/WorkItemTracking/Contracts”模块传入值。您可以在此处找到参考(显示模块路径、“类”和枚举):

上面的链接来自 TFS WorkItemTracking API Reference,可以在这里找到:

以下是在代码中添加它的方法:

  1. 声明“TFS/WorkItemTracking/Contracts”模块
  2. 将模块传递给回调(以下示例中的“_Contracts”)
  3. 根据需要使用“_Contracts”

这是您的代码,已更新为使用合同模块:

VSS.require([
    "VSS/Service", 
    "TFS/Dashboards/WidgetHelpers", 
    "TFS/WorkItemTracking/RestClient",
    "TFS/WorkItemTracking/Contracts"],
    function (VSS_Service, WidgetHelpers, TFS_Wit_WebApi, _Contracts) {

    WidgetHelpers.IncludeWidgetStyles();
    VSS.register("myapp", function () {
        var fetchData = function (widgetSettings) {
            const epicID = 123456;
            // Get a WIT client to make REST calls to VSTS
            return VSS_Service.getCollectionClient(TFS_Wit_WebApi.WorkItemTrackingHttpClient).
                getWorkItem(123456, null, null, _Contracts.WorkItemExpand.All).
                then(
                    //Successful retrieval of workItems
                    function (workItems) {
                        $('#myText').text(JSON.stringify(workItems));
                        console.log(workItems);
                        // Use the widget helper and return success as Widget Status
                        return WidgetHelpers.WidgetStatusHelper.Success();
                    },
                    function (error) {
                        // Use the widget helper and return failure as Widget Status
                        return WidgetHelpers.WidgetStatusHelper.Failure(error.message);
                    });
        }
    });
});

希望有帮助!

于 2018-07-06T15:48:52.923 回答
0

根据源代码,它是枚举,因此您可以在 getWorkItem 函数中指定整数(例如 4)。

export enum WorkItemExpand {
    None = 0,
    Relations = 1,
    Fields = 2,
    Links = 3,
    All = 4,
}
于 2018-05-11T02:45:40.487 回答