TFS 2018u1扩展开发:能否从自定义宿主对话框页面获取dialog对象?
回答:从自定义对话框页面内部控制OK按钮状态
当然可以从对话框页面内部获取到dialog对象!这完全可行,而且确实比从菜单项脚本里控制更符合页面逻辑闭环的设计思路。
在TFS 2018 Update 1的扩展环境中,你可以通过VSS.getDialog()方法直接在对话框页面的脚本中获取当前的对话框实例。拿到这个实例后,就能调用updateOkButton(isEnabled: boolean)方法动态启用或禁用OK按钮了。
示例代码
比如你在对话框页面里有一个输入框,想要在用户输入内容后自动启用OK按钮,可以参考这段代码:
// 对话框页面的初始化脚本 VSS.init({ explicitNotifyLoaded: true, usePlatformStyles: true }); VSS.ready(() => { // 获取当前对话框实例 const dialog = VSS.getDialog(); // 初始状态保持OK按钮禁用(和默认状态一致) dialog.updateOkButton(false); // 监听输入框的内容变化事件 const inputElement = document.getElementById('user-input') as HTMLInputElement; inputElement.addEventListener('input', () => { // 根据输入内容是否为空切换按钮状态 const hasValidContent = inputElement.value.trim().length > 0; dialog.updateOkButton(hasValidContent); }); // 通知宿主页面对话框加载完成 VSS.notifyLoadSucceeded(); });
补充说明
- 一定要在
VSS.init()和VSS.ready()的初始化流程完成后,再调用VSS.getDialog(),否则可能无法获取到正确的dialog对象。 updateOkButton()方法接受布尔值参数:true为启用按钮,false为禁用按钮,完全匹配你的需求场景。- 这种方式的优势在于,对话框的状态逻辑完全封装在自身页面内,不需要依赖外部菜单项的脚本,代码结构更清晰,后续维护也更便捷。
内容的提问来源于stack exchange,提问作者Seva Alekseyev
相关产品推荐
相关产品推荐

