从xml视图SAPUI5复制列表项

时间:2018-08-15 09:58:56

标签: javascript xml fragment sapui5

从控制器得到一个简单的问题,我要复制定义为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

2 个答案:

答案 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等,我设法复制了模板,具体取决于列表项的长度