在向 VSCode 提供樹視圖時,它似乎獲取了所有父元素但無法獲取這些父元素的子元素,我在其中添加了一個除錯點,并看到它只被呼叫過undefined
,是否有不合適的地方我的實施?
export class GalleryTreeItem extends vscode.TreeItem {
constructor(
private extensionUri: vscode.Uri,
public collapsibleState: vscode.TreeItemCollapsibleState,
public readonly name: string,
public readonly project?: Project
) {
super(name, collapsibleState);
if (this.project) {
this.contextValue = "gallery";
this.description = `v${this.project.config.userContentVersion}`;
this.tooltip = this.project.config.repositoryUrl;
this.command = {
title: "Plywood Gallery: Open a gallery webview.",
command: "plywood-gallery.Open",
arguments: [this.label],
};
this.iconPath = vscode.Uri.joinPath(
this.extensionUri,
"assets/photo-gallery.png"
);
} else {
this.contextValue = "chapter";
}
}
getChapters() {
if (this.project) {
return Object.keys(this.project.parameters).map(
(name) =>
new GalleryTreeItem(
this.extensionUri,
vscode.TreeItemCollapsibleState.Collapsed,
name
)
);
} else {
return [];
}
}
}
export class InstalledGalleriesExplorerProvider
implements vscode.TreeDataProvider<GalleryTreeItem>
{
constructor(private extensionUri: vscode.Uri) {}
private _onDidChangeTreeData: vscode.EventEmitter<
GalleryTreeItem | undefined | void
> = new vscode.EventEmitter<GalleryTreeItem | undefined | void>();
readonly onDidChangeTreeData: vscode.Event<
GalleryTreeItem | undefined | void
> = this._onDidChangeTreeData.event;
getTreeItem(element: GalleryTreeItem): vscode.TreeItem {
return element;
}
refresh(): void {
this._onDidChangeTreeData.fire();
}
async getChildren(element?: GalleryTreeItem): Promise<GalleryTreeItem[]> {
if (element) {
return Promise.resolve(element.getChapters());
} else {
return getLocalProjects(this.extensionUri).then((projects) =>
projects.map(
(prj) =>
new GalleryTreeItem(
this.extensionUri,
vscode.TreeItemCollapsibleState.None,
prj.config.projectName,
prj
)
)
);
}
}
}
uj5u.com熱心網友回復:
“如果我沒看錯,您正在創建作為父節點的 GalleryTreeItems,但它們具有vscode.TreeItemCollapsibleState.None
這意味著它們的行為就像它們是葉節點一樣。”
更改它以vscode.TreeItemCollapsibleState.Collapsed
修復它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/467675.html