我销毁了一个控件视图,我想用相同的ID创建它。如何 实现吗?
var sheetNumber = this.getView().byId("shtNum");
sheetNumber.destroy();
if(!sheetNumber){
var sheetView = new sap.ui.xmlview({
id:"shtNum",
viewName:"com.prowess.view.PieceId"
});
this.createId(sheetView);
}
但是它显示sheetView是未定义的。 在此先感谢
答案 0 :(得分:0)
![代码] [1]
如果您使用的是IE 12,请使用let。 let在范围内工作。
[查看有关let关键字的更多信息] [2]
或者使用下面的代码也许可行。
var sheetNumber = this.getView().byId("shtNum");
if(delete window.sheetNumber){
var sheetView = new sap.ui.xmlview({
id:"shtNum",
viewName:"com.prowess.view.PieceId"
});
this.createId(sheetView);
}
代码更新: 删除不能直接起作用,因为删除操作会删除边对象中的引用,因此我们需要使用完整的var FQN。 更新的代码正在我的系统上运行。 我们需要使用delete运算符在Windows对象中删除var。感谢您的建议@ user3808826
答案 1 :(得分:0)
我认为您需要删除控件的实例
var sheetNumber = this.getView().byId("shtNum");
sheetNumber.destroy();
delete sheetNumber;
if (!sheetNumber) {
var sheetView = new sap.ui.xmlview({
id:"shtNum",
viewName:"com.prowess.view.PieceId"
});
this.createId(sheetView);
}
答案 2 :(得分:0)
即使您在控件上调用destroy
,该变量仍将包含对销毁控件的引用,因此您的if
检查将永远无效。
您应该只需从代码中删除if
,因为检查基本上是没有用的。您也可以选择“取消定义”原始变量,尽管这样做没有太大意义。
var sheetNumber = this.getView().byId("shtNum");
sheetNumber.destroy();
sheetNumber = undefined; // optional
var sheetView = new sap.ui.xmlview({
id:"shtNum",
viewName:"com.prowess.view.PieceId"
});
您与createId
的行也不正确。如果您要获取刚刚创建的视图的ID,请使用以下方法:
sheetView.getId();