我是JavaScript的新手,我的构造是在Vscode中创建树景。
创建树视图时,如果我将JSON直接传递到树时,它会创建树,但是当我通过调用REST API传递数据时,未创建树。
这是因为在从REST API检索数据之前,空数据变量已传递给树。
如何解决这个问题?
预先感谢
class name {
gettreeItem(element){
//code
}
getChildren(element) {
if(element){
//some code here
}else{
return Promise.resolve(this.getDeps(restcall()))
}
restcall(){
var options = {
method: 'GET',
url: 'url',
headers:
{
Authorization :'Basic '+ Buffer.from('uid:pas').toString('base64')
}
};
return new Promise(function(resolve,reject){
request.get(options,function(err, resp, body){
if (err) {
reject(err);
} else {
return resolve(JSON.parse(body));
}
})
)
}
getDeps(JsonData){
//But here the Json Data is empty beacuse this function is called before the data is retrived from the rest api
}
}
我假设您已经拥有可以生成树视图的工作原型。现在,一旦您从REST调用中获取数据,则必须刷新树视图。
private _onDidChangeTreeData: EventEmitter<X | undefined> = new EventEmitter<X | undefined>();
readonly onDidChangeTreeData: Event<X | undefined> = this._onDidChangeTreeData.event;
refresh(): void {
this._onDidChangeTreeData.fire(undefined);
}
用您的数据类型替换X,一旦您的数据获取完成,请致电我们上面制定的刷新方法。这将解决您的问题。