Table从ListBase扩展。在表上,我可以将ListBase的项聚合用作如下属性:
<Table inset="false" items="{ path: '/ProductCollection', sorter: { path: 'Name' } }">
尽管定义为聚合,为什么我可以使用items
作为属性?
答案 0 :(得分:1)
在XML中写“ items = ...”与在JS中写“ bindItems(...”或“ bindAggregation('items',...”)相同。框架知道这是一个聚合,您正在将未命名的odata模型中的路径“ / ProductCollection”绑定到该路径。
正如罗尼(Ronnie)所提到的,绑定中有诸如“路径”或“分类器”之类的属性。您可以在这里https://sapui5.hana.ondemand.com/#/api/sap.ui.base.ManagedObject/methods/bindAggregation进行检查 oBindingInfo对象就是一个。
答案 1 :(得分:1)
在UI5中,基本上有两种填充聚合的方法。一种是直接添加元素,另一种是将它们绑定到模型。
您的示例显示了后一种情况,其中items
聚合绑定到模型中的集合/ProductCollection
。
聚集绑定由XML视图中的两部分组成,一个是您实际使用的带有“属性”的实际绑定,另一个是指定用于集合中每个元素的“模板”。 >
documentation中也对此进行了进一步解释:
<mvc:View controllerName="sap.ui.sample.App" xmlns="sap.m" xmlns:mvc="sap.ui.core.mvc"> <List id="companyList" items="{/companies}"> <items> <StandardListItem title="{name}" description="{city}" /> </items> </List> </mvc:View>
List元素同时具有
items
属性和嵌套的items
元素:
- 属性
items="{/companies}"
将json模型的companies
数组的子代绑定到列表。仅凭其本身不足以显示companies
,而是为所有包含的列表项及其后代的绑定设置父路径。另外,您需要声明一个嵌套元素。- 在我们的案例中,嵌套的
items
元素包含一个StandardListItem
。这用作创建单个列表行的模板。