从视图中删除控件

时间:2015-07-04 16:52:56

标签: sapui5

我正在尝试在运行时创建一个sap.m.Text并删除创建的元素。创建很简单,但删除元素是一个问题。我找不到办法去做。

代码:

创建 new sap.m.Text(this.createId(“Row1”))

删除

_oThis.getView().removeContent(1); // Doesn't work
_oThis.getView().removeContent(oObjText); // Doesn't work
_oThis.getView().removeContent(sap.ui.getCore().byId('Row1')); // Doesn't work
_oThis.getView().removeContent(view.byId(oo));   // Doesn't work
_oThis.getView().removeContent('Row1');   // Doesn't work

删除元素os $('Row1')的东西.remove(); //但是如果使用相同的ID“Row1”

添加回来,则不会从聚合中删除并给出重复的ID错误

PS: $('Row1')。remove()不能真正起作用,因为它没有从视图对象中删除。如何通过ID从JS View中删除文本/按钮或任何控件?

https://openui5.hana.ondemand.com/docs/api/symbols/sap.ui.core.mvc.View.html#removeContent

2 个答案:

答案 0 :(得分:6)

我在本地计算机上创建了一个小的本地示例。你有两个选择,要么在创建时检查你的文本控件是否已经存在,只是做一些调整,或者 - 如果你真的想要一个干净的开始 - 来销毁它:

this.byId("Row1").destroy();

请注意,使用createId:

创建标识符是最佳做法
this.createId("Row1");

答案 1 :(得分:1)

您可以使用 .destroy<aggregationName>() 方法删除控件。

例如,sap/f/DynamicPage 有一个名为 <content> 的聚合。 IE。 .destroyContent() 可以使用:

var oDynamicPage = this.byId("dynamicContentForm");
if (oDynamicPage !== undefined) {
  oDynamicPage.destroyContent();
}
相关问题