我有一个简单的XML视图(片段),如下所示:
<html:div id="holder"></html:div>
我想以编程方式添加内容:
var holder = this.byId("holder");
var label = new sap.m.Label({
text: "Label"
});
holder.addContent(label);
效果不算什么,没有错误,没有添加内容。 为什么不起作用?
答案 0 :(得分:1)
这是因为content
不是聚合(这是一个容易犯的错误,因为content
通常 是聚合的。)
sap.ui.core.HTML
的{{1}}元数据对象是 string 类型的属性。来自the jsdoc:
要显示的HTML内容,定义为字符串。
您需要为标签使用不同的容器,例如content
,或者您可以使用原始HTML粘贴在sap.ui.layout.VerticalLayout
对象中,而不是holder
类型
Here是一个jsbin,它将此问题的XML视图部分排除在等式之外。
注意:有关在XML视图中使用sap.m.Label
时的重要区别,请参阅下面的@ hirse评论
答案 1 :(得分:1)
HTML元素和UI5控件不直接兼容。 UI5控件是具有渲染功能的JavaScript对象。 render函数根据需要创建html片段。然后将该html片段插入到页面中。
我从未尝试过,但解决方法可能是使用标签的placeAt()
方法:
label.placeAt("holder");
如果您使用的是XML视图, holder ID将被添加前缀。然后你应该使用这样的东西:
label.placeAt(this.getView().createId("holder"));
答案 2 :(得分:1)