我正在尝试在自定义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();
});
答案 0 :(得分:0)
根据您的描述,您似乎希望将数据保存在组合控件中。 VSTS扩展可以直接在Microsoft提供的基础架构上存储用户首选项和复杂的数据结构。
有两种与数据存储服务进行交互的方式:REST API或作为VSS SDK的一部分提供的Microsoft提供的客户端服务。强烈建议扩展开发人员使用提供的客户端服务API,这些API在REST API的基础上提供了方便的包装。
看看有关 Data storage 的概念。这样可以确保您的用户数据安全,并像其他帐户和项目数据一样备份。这也意味着,出于简单的数据存储需求,您(作为扩展提供商)无需设置或管理(或支付)第三方数据存储服务。
该服务旨在让您存储和管理两个不同的 数据类型:
- 设置:简单的键值设置(如用户偏好设置)
- 文档:相似的复杂对象(文档)的集合
有关如何设置存储空间的更多详细信息,请咨询官方tutorial。