在TFS仪表板小部件上使用VSS控件

时间:2018-08-02 15:15:30

标签: javascript tfs widget azure-devops

我正在尝试在自定义tfs仪表板小部件的配置页面中添加Visual Studio Team Services(VSTS)Multivalue Combo Control。我能够显示该小部件,并且可以向其动态添加值。但是我无法“保存”该值。下面是我用来尝试创建和保存此控件的值的Javascript。我从第34行的浏览器控制台收到“未捕获的TypeError:无法读取未定义的属性'notify'的错误”(我的multiselect内的“ change”函数。我曾试图将逻辑放在“ load”函数内,如下所示)通常是在其中放置小部件逻辑的位置,但是随后我收到一条错误消息,指出在我的var multiValueCombo = Controls.create(Combos.Combo, CustomContainer, multiValueOptions);行中未定义“创建”。

当前代码的显示方式。当我更改控件中的值时,“保存按钮”不启用。我相信这是由于“通知”功能未触发所致。

VSS.require(["TFS/Dashboards/WidgetHelpers", "TFS/DistributedTask/TaskAgentRestClient", "VSS/Controls", "VSS/Controls/Combos"], function (WidgetHelpers, TFS_TaskAgentRestClient, Controls, Combos) {
VSS.register("DeploymentReports.Configuration", function () {
    var CustomContainer = $("#custom-combo-container");

    //Creating the Multiselect Control
    var multiValueOptions = {
        type: "multi-value",
        width: 250,
        source: [
            "Ford"],
        change: function () {
            //What it does when you change the value of the multiselect

            var customSettings = { data: JSON.stringify({ iteration: this.getText() }) };
            var eventName = WidgetHelpers.WidgetEvent.ConfigurationChange;
            var eventArgs = WidgetHelpers.WidgetEvent.Args(customSettings);
            widgetConfigurationContext.notify(eventName, eventArgs);   //I get an error for this line "Uncaught TypeError: Cannot read property 'notify' of undefined"
        }
    }
    $("<label />").text("Select the supported languages:").appendTo(CustomContainer);

    var multiValueCombo = Controls.create(Combos.Combo, CustomContainer, multiValueOptions);

    var commandArea = $("<div style='margin:auto' />").appendTo(CustomContainer);


    return {
        load: function (widgetSettings, widgetConfigurationContext, Controls, Combos) { 

            //adding items to the multiselect drop down
            multiValueOptions.source.push("Volvo");
            multiValueOptions.source.push("Jeep");
            return WidgetHelpers.WidgetStatusHelper.Success();
        },

        //Clicking the Save Button
        onSave: function() {
            var customSettings = {
                data: JSON.stringify({
                    cars: multiValueOptions.getText()
                    })
            };                              
            return WidgetHelpers.WidgetConfigurationSave.Valid(customSettings); 
        }
    }
});
VSS.notifyLoadSucceeded();

});

1 个答案:

答案 0 :(得分:0)

根据您的描述,您似乎希望将数据保存在组合控件中。 VSTS扩展可以直接在Microsoft提供的基础架构上存储用户首选项和复杂的数据结构。

有两种与数据存储服务进行交互的方式:REST API或作为VSS SDK的一部分提供的Microsoft提供的客户端服务。强烈建议扩展开发人员使用提供的客户端服务API,这些API在REST API的基础上提供了方便的包装。

看看有关 Data storage 的概念。这样可以确保您的用户数据安全,并像其他帐户和项目数据一样备份。这也意味着,出于简单的数据存储需求,您(作为扩展提供商)无需设置或管理(或支付)第三方数据存储服务。

  

该服务旨在让您存储和管理两个不同的   数据类型:

     
      
  • 设置:简单的键值设置(如用​​户偏好设置)
  •   
  • 文档:相似的复杂对象(文档)的集合
  •   

有关如何设置存储空间的更多详细信息,请咨询官方tutorial