从控制器得到一个简单的问题,我要复制定义为xml片段的列表项模板。到目前为止,我已经成功地仅复制了一次模板,但问题是我不能复制多次
我的代码:
var button = oEvent.getSource();
var id = button.data("id");
var list = button.getParent().getParent();
var newItem = new sap.m.CustomListItem();
newItem.addContent(this[id]);
list.addItem(newItem);
此[id]实际上是定义的CustomListItem xml片段:
this.volumes = sap.ui.xmlfragment("fragment.volumes", this);
this.getView().addDependent(this.volumes);
是否可以复制xml模板?
控制台中没有错误,只是空新生成的 customListItem
答案 0 :(得分:2)
首先,我建议您回顾the docs for aggregation binding
我认为您可能想要实现的目标是:
//check if the template has already been loaded, otherwise load it
if (!this._oTemplate) {
this._oTemplate = sap.ui.xmlfragment("path.to.fragment");
}
//clone the template to create a new item
var oNewItem = this._oTemplate.clone();
//add the clone to the list
oList.addItem(oNewItem);
使用XML片段创建项目时,仅存在1个项目。因此,如果您尝试将同一项目多次添加到列表中,则不会显示新项目(因为其中只有1个项目)。使用clone()
创建另一个项目。
答案 1 :(得分:0)
好吧,通过定义每次新的this.volumes1、2、3等,我设法复制了模板,具体取决于列表项的长度