公司动态

SAP UI5 中如何实现类似 Angular SimpleChanges 的属性变更感知

📅 2026/7/17 21:14:13
SAP UI5 中如何实现类似 Angular SimpleChanges 的属性变更感知
我们今天正在做的事情很具体,把 Angular 组件体系里的一个概念,准确地映射到 SAP UI5,而不是只根据名字寻找一个看起来相似的类。把问题直接落到结论上,SAP UI5 没有一个公开、稳定、可供应用代码直接使用,并且与@angular/core中SimpleChanges完全一一对应的类型,也没有一个所有控件都能实现的ngOnChanges生命周期钩子。SAP UI5 能完成同类业务目标,但需要先判断我们观察的是控件自身的managed property、数据绑定、模型数据、绑定上下文,还是最终使用者触发的交互事件。不同层次对应不同 API,不能用一个万能回调全部包住。理解这件事,需要把SimpleChanges的职责拆开。Angular 当前官方定义里,SimpleChanges是一个以输入属性名为键的变更映射,每个键对应一个SimpleChange。单个SimpleChange保存previousValue、currentValue、firstChange,并提供isFirstChange。当一个组件或指令的一个或多个输入发生变化时,Angular 调用ngOnChanges,而且调用点位于默认变更检测已经检查数据绑定输入之后、检查视图子节点和内容子节点之前。这个契约里包含四个很关键的能力,输入属性范围明确,同一轮里多个变化会汇总,旧值和新值同时存在,框架还记录这是不是第一次