在处理模型时,SAPUI5中parts
和path
的用途是什么?
有人可以针对以下代码(其中invoice
是JSONModel)向我解释吗?
<mvc:View
controllerName="sap.ui.demo.walkthrough.controller.InvoiceList"
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc">
<List
headerText="{i18n>invoiceListTitle}"
class="sapUiResponsiveMargin"
width="auto"
items="{invoice>/Invoices}">
<items>
<ObjectListItem
title="{invoice>Quantity} x {invoice>ProductName}"
number="{
parts: [{path: 'invoice>ExtendedPrice'}, {path: 'view>/currency'}],
type: 'sap.ui.model.type.Currency',
formatOptions: {
showMeasure: false
}
}"
numberUnit="{view>/currency}"
numberState="{= ${invoice>ExtendedPrice} > 50 ? 'Error' : 'Success' }">
<firstStatus>
<ObjectStatus text="{
path: 'invoice>Status',
formatter: '.formatter.statusText'
}"/>
</firstStatus>
</ObjectListItem>
</items>
</List>
</mvc:View>
答案 0 :(得分:2)
欢迎使用StackOverflow!
您要引用的内容称为 binding 。在您的示例中,您有:
items="{invoice>/Invoices}"
。numberUnit="{view>/currency}"
number="{parts: [...]}
(具有显式语法)和title="{invoice>Quantity} x {invoice>ProductName}"
(具有复杂语法)。numberState="{= ${invoice>ExtendedPrice} > 50 ? 'Error' : 'Success' }"
SDK在Data binding一章下有一些有关这些主题的扩展文档页面。
列表绑定用于基于模型内部的数据(基于列表或对象映射)创建控件集合。从概念上讲,您可以想象UI5遍历您的值并使用模板或工厂函数实例化相应的控件。在这种情况下, path 是指向集合的(相对或绝对)路径。
简单属性绑定仅用于基于模型中的单个标量字段来填充模型中控件的属性。 路径这里是指向属性的(相对或绝对)路径。
<强>复合属性绑定强>可用于填充基于多个字段,它们通过一个或者格式化功能或(在您的示例像货币)类型组合的控制的性质。例如,当使用格式化程序时,每个part
将作为参数传递给函数(例如,如果您有2个部分,则格式化程序应包含2个参数)。此处的 parts 用于定义在计算属性值时要使用的每个单独字段。
表达绑定或复杂的语法只是语法糖的一种形式,使您无需编写专用的JS函数就可以内联定义格式化程序。
您总是可以使用简化语法property="{/path}"
或扩展语法property="{path: '/path'}"
,相当于(但你被迫一次要指定多个结合参数使用扩展语法)。>
答案 1 :(得分:1)
简而言之,在路径中,您只能绑定一个属性或值,而部分则可以绑定多个属性或值,这有时非常有用。 / p>
在您的示例中,“货币”格式需要两个参数,一个是金额,另一个是货币,您必须使用零件来解析两个参数。
另外,当您编写自己的格式化程序功能时,如果您想要更多的参数,还可以使用部分部件来接收这些参数。
这称为复合绑定。
关于, 马文