Sapui5 无法以编程方式向XML视图中的简单HTML DIV元素添加内容
我有一个简单的XML视图(片段),如下所示:Sapui5 无法以编程方式向XML视图中的简单HTML DIV元素添加内容,sapui5,Sapui5,我有一个简单的XML视图(片段),如下所示: 我希望以编程方式添加内容,如下所示: var holder=this.byId(“holder”); var标签=新sap.m.label({ 文字:“标签” }); 支架。添加内容(标签); 效果是什么,没有错误,没有添加的内容。 为什么它不起作用?这是因为内容不是聚合(这是一个容易犯的错误,因为内容通常是聚合) sap.ui.core.HTML的content元数据对象是字符串类型的属性。发件人: 要显示的HTML内容,定义为字符串 您需要
我希望以编程方式添加内容,如下所示:
var holder=this.byId(“holder”);
var标签=新sap.m.label({
文字:“标签”
});
支架。添加内容(标签);
效果是什么,没有错误,没有添加的内容。
为什么它不起作用?这是因为
内容
不是聚合(这是一个容易犯的错误,因为内容
通常是聚合)
sap.ui.core.HTML
的content
元数据对象是字符串类型的属性。发件人:
要显示的HTML内容,定义为字符串
您需要为标签使用不同的容器,例如sap.ui.layout.VerticalLayout
,或者您可以只使用原始HTML来粘贴holder
对象,而不是sap.m.label
类型
是一个jsbin,它将这个问题的XML视图部分排除在等式之外
注意:在XML视图中使用
html:div
时,html元素和UI5控件不直接兼容,请参见下面@hirse的评论。UI5控件是具有渲染功能的JavaScript对象。render函数根据需要创建html片段。然后将该html片段插入到页面中
我从未尝试过,但解决方案可能是使用标签的方法:
label.placeAt(“持有人”);
如果您使用的是XML视图,则将以持有者id为前缀。那么你应该使用这样的东西:
label.placeAt(this.getView().createId(“holder”);
您可以使用sap.ui.core.element
类获取UI5控件的DOM元素
然后使用placeAt()
是一个工作示例。虽然我同意答案,但请注意,问题中的XML并没有创建
sap.ui.core.HTML
的控件,而是一个实际的HTML元素,因此@schnoedel的答案更接近问题。@hirse谢谢,学到了一些新东西。我将编辑我的问题,以提请大家注意,在呈现视图时,XMLView中的XHTML、svg和纯文本节点只是复制到视图的div中:将它们作为字符串放入将分配给XMLView的aResult中。_aParsedContent,并将_aParsedContent数组中的字符串直接写入RenderManager。控件的处理方式不同。