为什么我可以将物品作为财产?

时间:2018-06-29 06:11:35

标签: sapui5

TableListBase扩展。在表上,我可以将ListBase的项聚合用作如下属性:

<Table inset="false" items="{ path: '/ProductCollection', sorter: { path: 'Name' } }">    

尽管定义为聚合,为什么我可以使用items作为属性?

2 个答案:

答案 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。这用作创建单个列表行的模板。
  •