打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SAP Fiori Elements里Smart Link工作原理介绍

The hyperlink could easily be defined by Smart field with the help of corresponding annotation declared in OData Model metadata. The hyperlink in this example looks like below in UI:

Once clicked, it will display an additional popup contained more information which is defined in the application code:

All the source code of this sample project could be found from this link.

Project resource overview

(1) the label of Hyperlink field is defined in metadata via annotation “sap:label” (2) the hyperlink field itself is defined in XML view. Its value is bound to field Name in OData Model.

<form:content>   <smartField:SmartLabel labelFor="idName" />   <smartField:SmartField value="{Name}" id="idName" editable="false" />  </form:content>

(3) in OData model, the field Name has maintained annotation “com.sap.vocabularies.Common.v1.SemanticObject” so in runtime UI5 framework will render it as a SmartLink.

(4) Once pressed, UI5 framework will raise a popup which contains additional three links which are available to click. The navigation target is defined by application as below.

How link related annotation is parsed and SmartLink instance is created

As discussed in previous two blogs, UI5 framework will try to scan all potential annotations in OData model metadata,

Since now semantic annotation is available, in line 55 there is a central _getCreator which will return the dedicated function name for control creation.

In our example, the function name is _createEdmSemantic because of the availability of semantic annotation:

Within this _createEdmSemantic, a new instance of SmartLink is created.

In its constructor, the Press event handler is registered and hyperlink CSS class is added.

How is the popup dialog rendered when hyperlink is pressed

In event handler _linkPressed, semantic Attributes are calculated and returned:

_linkPressed calls fOpen() for Popup creation and display logic:

As the first step, in fOpen() a new popup dialog is created via _createPopover().

The popup dialog is implemented by NavigationPopover. When the links within this popup dialog are clicked, _onInnerNavigate will be called.

In order to render the hyperlinks within the popup dialog, UI5 framework must know the navigation target url. This information is provided by application and retrieved by UI5 framework asynchronously:

The navigation target information from application is passed into UI5 framework callback and LinkData instance is created based on each of them, then added to popup dialog instance.

After that you could observe that the three navigation information are maintained in the popup dialog instance’s aggregation area:

Once all is done, TargetsObtained event is raised:

And the event handler for it will call show function of popup dialog, so you could see it in UI finally.

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
UI: Become windowless
redui Typescript UI framework.
[Bernstein09] 10.4. Java Enterprise Edition
跨平台构建工具 — Qt - A cross-platform application and UI framework
Wiring Your Web Application with Open Source Java
Android uiautomator 使用入门官方教程
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服