SAPUI5 Walkthrough教程(二十)——数据类型

发票列表已经看起来不错了,但是没有分配价格的发票是什么?通常,价格以技术格式存储,并在数据模型中使用“.”分隔符。例如,我们的菠萝发票的计算价格为 87.2,不含货币。我们将使用 SAPUI5 数据类型来正确格式化价格,使用依赖于区域设置的小数分隔符和分隔符后的两位数。
webapp/view/InvoiceList.view.xml
通过将数字和数字单位属性添加到 ObjectListItem 控件,我们向视图中的发票列表添加价格,然后通过将绑定语法的类型属性设置为 sap.ui.model.type.Currency 来对数字应用货币数据类型。
正如在上面看到的,我们正在对 ObjectListItem 的 number 属性使用特殊的绑定语法。此绑定语法使用所谓的“计算字段”,它允许将来自不同模型的多个属性绑定到控件的单个属性。来自不同模型绑定的属性称为“零件”。在上面的示例中,控件的属性是数字,从两个不同模型中检索的绑定属性(“部件”)是发票>扩展价格和视图>/货币。
我们希望以欧元显示价格,通常货币是后端数据模型的一部分。在我们的例子中,情况并非如此,因此我们需要直接在应用程序中定义它。因此,我们为发票列表添加一个控制器,并使用 currency 属性作为绑定语法的第二部分。货币类型将根据货币代码为我们处理价格的格式。在我们的例子中,价格以 2 位小数显示。
此外,我们将格式选项 showMeasure 设置为 false。这将隐藏属性编号中的货币代码,因为它作为单独的属性编号单位传递给 ObjectListItem 控件。

<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}"/>
	</items>
   </List>
</mvc:View>

**webapp/controller/InvoiceList.controller.js (New)**为了能够访问不属于我们数据模型的货币代码,我们在发票列表的控制器中定义了一个视图模型。这是一个简单的 JSON 模型,只有一个关键货币和值 EUR。这可以绑定到数字字段的格式化程序。视图模型可以保存分配给控件的任何配置选项,以绑定属性(如可见性)。

sap.ui.define([
	"sap/ui/core/mvc/Controller",
	"sap/ui/model/json/JSONModel"
], function (Controller, JSONModel) {
	"use strict";

	return Controller.extend("sap.ui.demo.walkthrough.controller.InvoiceList", {

		onInit : function () {
			var oViewModel = new JSONModel({
				currency: "EUR"
			});
			this.getView().setModel(oViewModel, "view");
		}

	});
});

结果:显示了一个带有价格和数量单位的发票清单
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值