且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

SAP UI5应用如果遇到数据绑定问题时,应该如何自己定位问题?

更新时间:2021-11-04 20:24:10

I will use the field “ClosingDate” to demonstrate my favorite approach to trouble shoot field binding issue. Generally speaking, the issue could be summarized as that although you have bound your UI control to a given field of a Json or odata model, however in the runtime nothing is displayed in the control.


In order to find the root cause of such issue, we need to understand the logic that how is the field value in a model bound to our control and finally displayed in the UI.



SAP UI5应用如果遇到数据绑定问题时,应该如何自己定位问题?SAP UI5应用如果遇到数据绑定问题时,应该如何自己定位问题?Within this folder, you can find dedicated js file for OData Model property, Json Model property and i18n Model property accordingly.

The Binding and ClientPropertyBinding are the prototype of these concrete binding type.


SAP UI5应用如果遇到数据绑定问题时,应该如何自己定位问题?Since there are so many controls which have been bound to model fields, the constructor of Binding will be called again and again for each binding relationship.


As I am only interested with “ClosingDate”, so I make small modifications on the Binding.js directly in Chrome.


Then I resume the execution of debugger and soon the debugger stops at the very point where the mapping instance for “ClosingDate” is instantiated:



SAP UI5应用如果遇到数据绑定问题时,应该如何自己定位问题?Every binding instance has one attribute sPath to indicate which model field it represents, and another attribute oValue, which contains the actual content of the model field, which will be rendered in the control.


Now I would like to know for the model field “ClosingDate”, when the oValue will be filled and where the content of oValue come from. So I switched to the inner callstack:



SAP UI5应用如果遇到数据绑定问题时,应该如何自己定位问题?And now we are clear: the oValue of current binding instance comes from the corresponding node of OData model, to be exactly using UI5 terminology, from the binding Context.


SAP UI5应用如果遇到数据绑定问题时,应该如何自己定位问题?SAP UI5应用如果遇到数据绑定问题时,应该如何自己定位问题?When the control containing any attributes which are bound to a property of Model, the function “getExternalValue” of related property binding instance will be called. The result will be displayed in UI.


If there is any formatter defined for the property binding by application, for example in my application I have defined my custom formatter “dateFormatterMaster”. In line 79 framework will call such formatter if there is any.


SAP UI5应用如果遇到数据绑定问题时,应该如何自己定位问题?