【发布时间】:2021-04-09 02:47:01
【问题描述】:
我有一个 webview (SidebarProvider),它允许用户输入并发送它。我想将这样的输入发送到扩展SearchedWordPanel。
步骤:
- 在我的侧边栏视图(html、js 和 css)中,用户键入一个单词并按“搜索”。 (作品)
- 单词被发送到 SidebarProvider,它使用
onDidReceiveMessage接收消息并运行命令以显示 SearchedWordPanel。 (作品) -
SearchedWordPanel打开并显示用户输入的单词。 (问题)
我能够执行第 1 点和第 2 点,但无法将搜索到的单词发送到 SearchedWordPanel。
extensions.ts
const sidebarProvider = new SidebarProvider(context.extensionUri);
context.subscriptions.push(
vscode.window.registerWebviewViewProvider(
"vsmyapp-sidebar",
sidebarProvider
)
);
context.subscriptions.push(
vscode.commands.registerCommand('vsmyapp.showSearched', () => {
SearchedWordPanel.kill();
SearchedWordPanel.createOrShow(context.extensionUri);
})
);
侧边栏视图
<button on:click={() =>
tsvscode.postMessage({
type: 'onSearch',
value: searchedText
})
}>Search</button>
SidebarProvider
webviewView.webview.onDidReceiveMessage(async (data) => {
switch (data.type) {
case "onSearch" : {
if (!data.value) {
return;
}
vscode.window.showInformationMessage(data.value); <-- WORKS
vscode.commands.executeCommand( <--WORKS, the command is run. BUT How do I send data.value to SearchedWordPanel?
"vsmyapp.showSearched",
);
COMMAND_THAT_SENDS_(data.value)_TO_SearchedWordPanel // Pseudocode
break;
}
问题:当我在SidebarProvider 中执行vscode.commands.executeCommand("vsmyapp.showSearched"); 时,如何将data.value 发送到SearchedWordPanel?
【问题讨论】:
-
如果您解决了这个问题,请告诉我们。我也被困住了:(
标签: typescript visual-studio-code vscode-extensions