Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sapui5 无法以编程方式向XML视图中的简单HTML DIV元素添加内容_Sapui5 - Fatal编程技术网

Sapui5 无法以编程方式向XML视图中的简单HTML DIV元素添加内容

Sapui5 无法以编程方式向XML视图中的简单HTML DIV元素添加内容,sapui5,Sapui5,我有一个简单的XML视图(片段),如下所示: 我希望以编程方式添加内容,如下所示: var holder=this.byId(“holder”); var标签=新sap.m.label({ 文字:“标签” }); 支架。添加内容(标签); 效果是什么,没有错误,没有添加的内容。 为什么它不起作用?这是因为内容不是聚合(这是一个容易犯的错误,因为内容通常是聚合) sap.ui.core.HTML的content元数据对象是字符串类型的属性。发件人: 要显示的HTML内容,定义为字符串 您需要

我有一个简单的XML视图(片段),如下所示:


我希望以编程方式添加内容,如下所示:

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。控件的处理方式不同。