Skip to main content

Module 16: Advanced Data Binding & Models

Advanced data binding techniques allow SAPUI5 applications to remain clean, performant, and scalable even as complexity grows.

This module focuses on:

  • Combining data from multiple sources
  • Using binding contexts effectively
  • Optimizing performance for large applications

1. Composite Binding


What is Composite Binding?

Composite binding allows you to:

  • Combine multiple model properties
  • Bind them to one control property
  • Optionally format the combined value

Example: Composite Binding with Formatter

<Text
text="{
parts: [
{ path: '/firstName' },
{ path: '/lastName' }
],
formatter: '.formatFullName'
}" />
formatFullName: function (sFirst, sLast) {
return sFirst + ' ' + sLast;
}
Use Case

Display combined values like Full Name, Address, or Amounts with Currency.


2. Multiple Models Usage


Why Multiple Models?

Large UI5 apps typically use:

  • One ODataModel (backend)
  • One or more JSONModels (UI state)
  • ResourceModel (i18n)
  • Device model
Enterprise Pattern

One model per responsibility.


Setting Multiple Models

this.getView().setModel(oUserModel, "user");
this.getView().setModel(oViewModel, "view");

Binding Named Models

<Text text="{user>/name}" />
<Text visible="{view>/isEditable}" />
Best Practice

Always use named models for clarity in large apps.


3. Context Binding


What is Binding Context?

A binding context defines:

  • The current data object
  • Relative paths for bindings

Element Binding Recap

this.getView().bindElement("/SalesOrderSet('50000001')");
<Text text="{Customer}" />
<Text text="{Amount}" />
Key Benefit

No need to repeat full paths in every binding.


Context Binding in Event Handling

var oContext = oEvent.getSource().getBindingContext();
var sPath = oContext.getPath();
Real Projects

Context binding is critical in tables, lists, and dialogs.


4. Binding Modes (Advanced Usage)


Binding Modes Recap

ModeDirection
OneWayModel to UI
TwoWayModel and UI
OneTimeInitial only

Explicit Binding Mode Control

oModel.setDefaultBindingMode(sap.ui.model.BindingMode.OneWay);

When to Change Binding Mode

Use OneWay When
  • Display-only data
  • Performance-sensitive scenarios
Be Careful With TwoWay
  • Accidental model updates
  • Unintended backend changes

5. Performance Optimization in Data Binding


Common Performance Issues

  • Too many bindings
  • Deep binding paths
  • Heavy formatters
  • Frequent model refreshes

Performance Best Practices

Follow These
  • Use element binding to reduce path depth
  • Avoid formatters in large tables
  • Use expression binding for simple logic
  • Prefer OneWay binding where possible

Avoid Binding in Loops

Anti-Pattern

Creating controls dynamically with bindings in loops causes performance degradation.


6. Model Refresh Strategies


Full Model Refresh

oModel.refresh(true);
  • Reloads all data
  • Expensive operation
Use Sparingly

Avoid full refreshes unless absolutely required.


Partial Updates (Preferred)

oModel.setProperty("/status", "Approved");
  • Updates only affected bindings
  • High performance

Refresh After submitChanges

oModel.submitChanges({
success: function () {
oModel.refresh();
}
});
Real Projects

Refresh only the affected entity, not the whole model.


7. Advanced Pattern: View Model (State Model)


What is a View Model?

A view model is a JSONModel used only for:

  • UI state
  • Visibility
  • Enable/disable flags

var oViewModel = new sap.ui.model.json.JSONModel({
busy: false,
editable: true
});
this.getView().setModel(oViewModel, "view");
<Button enabled="{view>/editable}" />
Clean Architecture

Separating UI state prevents polluting business models.


8. Advanced Binding Pitfalls

Avoid These
  • Refreshing full ODataModel frequently
  • Complex formatter logic
  • TwoWay binding everywhere
  • Mixing UI state with backend data

9. Interview-Grade Explanation

Q: How do you optimize data binding performance in SAPUI5?

Answer:

I use element binding to reduce deep paths, prefer OneWay binding for display-only data, avoid heavy formatters in tables, use view models for UI state, and minimize full model refreshes by updating only affected properties.


10. Summary

  • Composite binding combines multiple values
  • Multiple models improve separation of concerns
  • Context binding simplifies paths
  • Binding modes control data flow
  • Performance requires careful binding design
  • Model refresh should be minimal and targeted

11. What's Next?

➡️ Module 17: Advanced OData Concepts

Learning Tip

Advanced binding mastery separates good UI5 developers from great ones.