SAP UI5 初学者教程之二十 - SAP UI5 的表达式绑定用法讲解
一套适合 SAP UI5 初学者循序渐进的学习教程教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 的引导过程 Bootstrap SAP UI5 初学者教程之三:开始接触第一个 SAP UI5 控件 SAP UI5 初学者教程之四:XML 视图初探 SAP UI5 初学者教程之五:视图
2007年1月11日~2022年1月11日,我在 SAP 成都研究院这15年
今天对于绝大多数人来说是一个普通的日子,然而对于我来说很有纪念意义。因为 15 年前的今天,我入职 SAP 成都研究院,一直工作至今。 我入职时的职位是 developer, 也就是通常所说的开发人员。15 年过去了,我的身份没有发生任何变化,我在 SAP 成都研究院没有尝试过其他诸如架构师或者开发经理之类的职位。虽然我今年已经年满 40,真正成为了一个”大龄程序员“,但我仍然和刚毕业的年轻
SAP UI5 初学者教程之十九 - SAP UI5 数据类型和复杂的数据绑定
一套适合 SAP UI5 初学者循序渐进的学习教程教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 的引导过程 Bootstrap SAP UI5 初学者教程之三:开始接触第一个 SAP UI5 控件 SAP UI5 初学者教程之四:XML 视图初探 SAP UI5 初学者教程之五:视图
SAP UI5 货币金额显示的格式化逻辑
先看一些实际的例子: var oFormat = NumberFormat.getCurrencyInstance({ "currencyCode": false, "customCurrencies": { "BTC": { "symbol": "\u0243", "d
SAP UI5 xml 视图里定义的控件,运行时如何创建其实例的?
入口函数在 XMLTemplateProcessor 里: 解析 xml 视图的源代码之后,调用 createRegularControls 进行实例创建: 这是我的 xml 视图源代码: <mvc:View controllerName="sap.ui5.walkthrough.controller.InvoiceList" xmlns=&
SAP UI5 数据绑定语法里的特殊符号,以及绝对绑定和相对绑定概念详解
一套适合 SAP UI5 初学者循序渐进的学习教程教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 初学者教程之一:Hello World SAP UI5 初学者教程之二:SAP UI5 的引导过程 Bootstrap SAP UI5 初学者教程之三:开始接触第一个 SAP UI5 控件 SAP UI5 初学者教程之四:XML 视图初探 SAP UI5 初学者教程之五:视图
什么是 SAP UI5 的 Element binding
元素绑定(element binding)允许我们将元素绑定到模型数据中的特定对象,这将创建绑定上下文(binding context)并允许控件及其所有子项中的相对绑定。 这在 master-detail 场景中特别有用。 假设我们有以下 JSON 数据: { "company" : { "name" : "Ac
什么是 SAP UI5 的绑定路径
SAP UI5 绑定路径由许多名称标记(name token)组成,这些标记由分隔符字符分隔。 在框架提供的所有模型中,分隔符 char 是斜线”/“ 即 / 符号。 绑定路径可以是绝对的,也可以是相对的:绝对绑定路径以斜杠 “/“ 开头,相对绑定路径以名称标记开头,并且相对于绑定的控件的上下文进行解析。 在聚合绑定的情况下,聚合的每个条目都存在上下文,也可以使用 setBindingConte
SAP HANA,S/4HANA 和 SAP BTP 的辨析
这是知乎上一个朋友向我咨询的问题。 SAP HANA,SAP S/4HANA,和 SAP BTP,这几个名词,对于刚接触 SAP 的朋友来说确实容易混淆。 光是 SAP HANA,就有好几款名称类似但定位有所差异的产品。关于它们之间的详细辨析,参考我之前写过的文章:SAP 几款容易令初学者混淆的 HANA 解决方案。 SAP S/4HANA,是 SAP 于 2015 年 2 月推出了的旗舰级
SAP UI5 未来发展的趋势之一:拥抱 TypeScript
这是 Jerry 2022 年第 3 篇原创文章,也是本公众号第 371 篇原创文章。 近年来,前端开发领域迅猛发展,各种新技术、新框架、新工具和新的开发理念,层出不穷。另一方面,前端应用的规则和复杂度也大大增加。虽然 JavaScript 已经成为 Web 前端开发最普遍使用的编程语言,但 JavaScript 诞生之初,并不是为了开发超大规模的复杂前端应用而设计的。作为一门动态类型编程语言,
我与无影的初体验:使用无影云桌面进行一个开源 Angular 项目的端到端测试
近日很荣幸地收到了阿里云邀请做一个关于阿里旗下无影云桌面的评测,从官网上了解到阿里云无影云桌面原名为弹性云桌面,融合了无影产品技术后更名升级,可广泛应用于具有高数据安全管控、高性能计算等要求的安全办公、金融、设计、影视、教育等领域。 我是一个程序员,最近一年的工作是参与开发一个开源的电商前端(Storefront)项目,代号 Spartacus,使用的编程语言是 TypeScript,开发框架是
使用 Babel 将基于 ES6 的 SAP UI5 的代码转译成传统 JavaScript 代码
我有下列这段基于 ES6 的 SAP UI5 代码,使用 JavaScript 编写而成: import UIComponent from "sap/ui/core/UIComponent"; /** * @namespace ui5.typescript.helloworld */ export default class Component extends U
SAP UI5 的 TypeScript 实践
TypeScript 是 JavaScript 的超集,它为语言添加了可选的静态类型。 它带有一个编译器,可以将 TypeScript 代码转换为 JavaScript,并在 JavaScript 运行的任何地方运行它,浏览器,NodeJS 等等。 最大的变化是 TypeScript 自带了 Types。同时,这使得开发像您在 JavaScript 中可能习惯的通用代码变得更加困难,因为它是无类型
通过 SAP UI5 的 TypeScript 开发环境,来学习什么是 DefinitelyTyped
我们看个具体的例子。下面这个使用 TypeScript 编写的 SAP UI5 Component: import UIComponent from "sap/ui/core/UIComponent"; /** * @namespace ui5.typescript.helloworld */ export default class Component
使用 TypeScript 编写 SAP UI5 应用的准备工作
新建一个文件夹 ui5-ts, 执行命令行 npm init -y 初始化: 新建一个 src 文件夹,里面存放一个 Component.ts 文件,源代码如下: import UIComponent from "sap/ui/core/UIComponent"; /** * @namespace ui5.typescript.helloworld */
避免修改构造函数输入参数引起的 breaking change
本文记录我在工作中的一次失误。 如下图所示,我在构造函数里注入了一个新的依赖: protected checkoutService: CheckoutService 当下列情况同时满足时,客户就会遇到编译错误: (1) 客户升级到了新的 minor 版本,即我引入该新的依赖的版本。(2) 客户之前扩展了 CheckoutDeliveryService(3) 客户在自己的扩展类的构造函数
通过一个实际的例子学习 combineLatest
我开发了一个简单的 Angular 应用来展示这个 rxjs Operator 的用法,地址如下: https://jerry-combine.stackblitz.io/ 其中 limit 控制 list 元素显示个数,而 offset 控制显示元素的索引: 例如我将 offset 改为 1 时,显示的元素 从 ivysaur 开始: 首先我设计了一个 form 表单,里面包含了两个
SAP Spartacus express checkout 设计
所谓 express checkout(快速结账),是一种超快速结账表格,通常为回头客设计,可减少表单字段以确保更快的结账流程。运输、计费和付款信息在站点的一个包含区域中提交,从而为客户提供简单和高效的服务。快速结帐允许用户跳过所有步骤,并在单击“转到结帐”后立即看到评论摘要页面。 Angular Page Guard 将检查用户是否至少有 1 个送货地址和 1 种付款方式 - 如果有更多,它将
SAP 电商云 Spartacus UI 的交货模式 Delivery Mode 设计
本文讨论 Spartacus UI checkout 流程时,下图高亮的两种交货模式,Delivery Mode 的数据来源: 从组件的模板文件里能看出,这些 radio input 的数据,来自 Observable 对象 supportedDeliveryModes$: 后者通过服务类 checkoutDeliveryService 的 getSupportedDeliveryMo
RxJs 操作符 withLatestFrom 在 SAP 电商云 Spartacus UI 中的应用
看下面这段代码: getSupportedDeliveryModes(): Observable<DeliveryMode[]> { return this.checkoutStore.pipe( select(CheckoutSelectors.getSupportedDeliveryModes), withLatestFrom(