tfs - 无法访问工作项跟踪服务 Azure DevOps Extensions
问题描述
我正在使用工作项页面上呈现扩展
<WebpageControlOptions AllowScript="true" ReloadOnParamChange="true">
<Link UrlRoot="http://.../extension/Validate-extension/1.0.69/assetbyname/workItemNotifications.html"/>
</WebpageControlOptions>
以下是 html/js 代码:
var workItemID = 0;
VSS.init({
explicitNotifyLoaded: true,
usePlatformScripts: true
});
VSS.ready(function () {
var currentContext = VSS.getWebContext();
VSS.register(VSS.getContribution().id, function (context) {
return {
// event handlers, called when the active work item is loaded/unloaded/modified/saved
onFieldChanged: function (args) {
if (!changedFields[args.id]) {
changedFields[args.id] = [];
changedFieldCount[args.id] = 0;
}
$.each(args.changedFields, function (key, value) {
if (!changedFields[args.id][key]) {
changedFields[args.id][key] = value;
changedFieldCount[args.id]++;
}
});
},
onLoaded: function (args) {
console.log("OnloadNotification");
VSS.require(["TFS/WorkItemTracking/Services"], function (workItemServices) {
workItemServices.WorkItemFormService.getService().then(function (workItemFormSvc) {
if (workItemFormSvc.hasActiveWorkItem()) {
console.log("Active work item is available.");
workItemFormSvc.getFieldValues(["System.Id"]).then(
function (value) {
var val = JSON.stringify(value);
$.each(value, function (key, values) {
if(key == "System.Id"){
workItemID = values;
}
});
});
}
else {
console.log("Active work item is NOT available.");
}
});
});
},
onUnloaded: function (args) {
},
onSaved: function (args) {
changedFieldCount[args.id] = 0;
changedFields[args.id] = [];
},
onReset: function (args) {
changedFieldCount[args.id] = 0;
changedFields[args.id] = [];
},
onRefreshed: function (args) {
changedFieldCount[args.id] = 0;
changedFields[args.id] = [];
}
};
});
VSS.notifyLoadSucceeded();
});
$(document).ready(function () {
$("#btnValidate").click(function () {
var getResponse = ValidateUser();
VSS.require(["TFS/WorkItemTracking/Services"], function (_WorkItemServices) {
var wiServiceNew = _WorkItemServices.WorkItemFormService.getService();
wiServiceNew.setFieldValue("System.Title", "Title set from your group extension!");
});
});
});
我想要实现的两件事
- 在按钮单击事件验证用户之后,我必须在成功验证后访问工作项字段。无法访问 _WorkItemServices。无法获取工作项字段。
- 当我设置 workItemID 变量 OnLoad 事件时,它会在单击选项卡时重置为 0,不会保留设置为 OnLoad 的值。
解决方案
您可以尝试与IWorkItemFormService
服务交互。例如:
import {
IWorkItemChangedArgs,
IWorkItemFieldChangedArgs,
IWorkItemFormService,
IWorkItemLoadedArgs,
WorkItemTrackingServiceIds
} from "azure-devops-extension-api/WorkItemTracking";
在此处查看示例:
推荐阅读
- javascript - 我的 Javascript 动画无法正常工作。接收类型错误:r 未定义
- react-native - `run-android`时反应本机错误
- azure - 在 Azure HDInsight Blob 存储中读取 csv 文件时出错。
- c++ - 多线程 RayTracer 使用两种不同的算法生成工件
- ionic3 - Ionic 3:Android 模拟器引发运行时错误:无法读取未定义的属性“调整大小”
- macos - 用较新的 Brew 版本替换旧的 Xcode 命令行工具
- exception - 声明 CurPageChanged 时 Inno 脚本中的奇怪异常行为
- python - 在 matplotlib 中调整 xticklabel 的位置对 x 方向没有影响
- csv - 使用 sed 查找并替换特定 csv 列中的多个模式
- python - 如何使用整数变量作为函数的参数?