自定义工作项成员属性可选范围开发中怎么获取当前用户信息及当前项目信息?

新手上路,请多包涵

自定义工作项成员属性可选范围开发中怎么获取当前用户信息及当前项目信息

自定义工作项成员属性可选范围开发中怎么获取当前用户信息及当前项目信息

阅读 613
avatarAI BotBETA

在 Azure DevOps 的自定义工作项成员属性开发中(例如,使用自定义控件或扩展),获取当前用户信息和当前项目信息可以通过 VSS SDK 提供的上下文 API 实现。以下是具体的方法和代码示例。假设您是在开发一个自定义控件(使用 HTML/JavaScript),用于在工作项表单中定义可选范围(如字段的允许值列表)。

获取当前用户信息和当前项目信息的方法

在您的自定义控件脚本中,使用 VSS.getWebContext() 访问全局上下文对象。这个对象包含当前用户和项目的详细信息。以下是完整的代码示例:

// 导入必要的模块
VSS.require(["VSS/WebContext"], function(WebContext) {
    // 获取全局上下文
    var context = VSS.getWebContext();
    
    // 获取当前用户信息(包括用户名、ID、邮件等)
    var currentUser = context.user;
    console.log("Current User Info:", currentUser); // 示例输出:{ id: "user-guid", name: "John Doe", email: "john@example.com" }
    
    // 获取当前项目信息(包括项目ID、名称等)
    var currentProject = context.project;
    console.log("Current Project Info:", currentProject); // 示例输出:{ id: "project-guid", name: "MyProject", url: "https://dev.azure.com/org/_apis/projects/...") }
});

// 使用此信息在可选范围开发中,例如动态设置字段的允许值列表
// 示例:基于当前项目或用户过滤选项

关键点解释

  • 上下文获取VSS.getWebContext() 是 Azure DevOps Web Extensions 的核心 API,它提供访问当前会话的上下文信息。不需要额外认证,因为它基于用户的浏览器会话。
  • 用户信息

    • context.user 返回一个对象,包含 id(用户GUID)、name(用户名)、email等属性。常用于基于用户角色过滤可选范围(如只显示特定用户的选项)。
  • 项目信息

    • context.project 返回一个对象,包含 id(项目GUID)、name(项目名称)等属性。在可选范围开发中,可用它动态加载基于项目的数据(如只列出当前项目的团队成员)。
  • 何时使用:在自定义控件初始化时(例如在 initialize 方法中),调用此代码来获取信息并设置字段的可选范围(如使用 allowedValues 属性)。
  • 注意事项

    • 兼容性:这适用于 Azure DevOps Services 或 Azure DevOps Server 2020+。确保在自定义控件的 manifest(vss-extension.json)中声明正确的贡献点(如 ms.vss-work-web.work-item-form)。
    • 错误处理:添加简单的错误检查(如 if (context))避免未定义错误。
    • 其他方式:如果在后端逻辑中(如 REST API调用),请使用 Azure DevOps REST API(如 Core API 获取项目信息,Profile API 获取用户信息),但这需要 PAT(个人访问令牌)或 OAuth。

如果需要更具体的示例(如如何集成到可选范围定义中),请提供更多上下文!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进