从 xml 视图 SAPUI5 复制列表项

Posted

技术标签:

【中文标题】从 xml 视图 SAPUI5 复制列表项【英文标题】:Copy list item from xml view SAPUI5 【发布时间】:2019-01-22 05:01:27 【问题描述】:

有一个简单的问题,来自控制器,我想复制定义为 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);

this[id] 是实际定义的 CustomListItem xml 片段:

this.volumes = sap.ui.xmlfragment("fragment.volumes", this);
this.getView().addDependent(this.volumes);

可以复制xml模板吗?

控制台没有错误,只是新生成的customListItem

【问题讨论】:

【参考方案1】:

首先,我建议查看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 个项目。因此,如果您尝试将同一项目多次添加到列表中,您将不会看到新项目出现(因为只有其中一项)。使用 clone() 创建另一个项目。

【讨论】:

【参考方案2】:

好的,我已经成功复制了模板,每次定义新的 this.volumes1、2、3 等,取决于列表项的长度

【讨论】:

以上是关于从 xml 视图 SAPUI5 复制列表项的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的列表中删除重复项? [复制]

xml 自定义列表复选框广播项目SAPUI5

SAPUI5 多重聚合绑定

SAPUI5:更改 url 中的 id 后如何重定向到 NotFound 页面?

如何为各种列表视图项打开不同的 XML?

在 SAPUI5 列表中添加复选框