Hammer
Hammer

Reputation: 15

How to hide control if entity set is empty

I get from backend via OData service IDNumber (an EntitySet). On frontend, all IDs are shown but if the IDNumber set is empty, I want to hide the ComboBox (visible="false"). I have no idea how to handle this.

<ComboBox id="cbIDNumber"
  items="{/IDNumber}"
  visible="{
    path: '{/IDNumber}',
    formatter: '.formatter.formatVisible'
  }"
/>

In formatter.js, the passed parameter is null. How can I get some input I can work with?

Upvotes: 1

Views: 479

Answers (1)

Marc
Marc

Reputation: 6190

There is an event dataReceived that will be triggered if your IDNumber list is loaded.

<ComboBox id="cbIDNumber" 
    items="{
        path: '/IDNumber',
        events: {
            dataReceived: '.onDataReceived'
        }
    }" />

In your controller you can then implement an event handler:

onDataReceived: function(oEvent) {
    const oData = oEvent.getParameter("data");
    const aResults = oData.results;
    const bIsVisible = aResults.length > 0;

    const oCB = this.byId("cbIDNumber");
    oCB.setVisible(bIsVisible);
}

Upvotes: 2

Related Questions