2017-06-07 2 views
0

Ich habe diese Tabelle Komponente (sap.m.Table):Popover innen auf Tabelle keine Daten angezeigt werden

<Table 
    inset="false" 
    items="{ 
     path: '/SelectExpenseDetails' 
    }" > 
    <headerToolbar> 
     <Toolbar> 
      <Button icon="sap-icon://cause" press="onBack" ariaLabelledBy="Atrás" /> 
      <Button icon="sap-icon://message-information" press="showInfoExpenseItem" ariaLabelledBy="Atrás" /> 
      <Title text="{i18n>GV.APROB.EXPENSES.detail.title}" level="H2"/> 

     </Toolbar> 
    </headerToolbar> 
    <columns> 
     <Column width="7em" > 
      <Text text="{i18n>GV.APROB.EXPENSES.detail.concepto.pago}" /> 
     </Column> 

     <Column 
      width="4em" 
      demandPopin="true" 
      hAlign="Center"> 
      <Text text="{i18n>GV.APROB.EXPENSES.detail.monto}" /> 
     </Column> 

     <Column width="1.5em" 
      demandPopin="true" 
      hAlign="Center"> 

     </Column> 
    </columns> 
    <items> 
     <ColumnListItem> 

      <ObjectAttribute text="{ExpensesCategory}" /> 

      <ObjectNumber 
       number="{PlanAmount}" 
       unit="{masterExpense>/CurrencySymbol}" /> 

      <Button icon="sap-icon://comment" press="showCommentsExpenseDetailItem" class="sapUiTinyMarginBegin"/>           
     </ColumnListItem> 
    </items> 
</Table> 

Funktion showCommentsExpenseDetailItem die popover anzuzeigen. Popover Komponente geöffnet wird, aber es doen der Anzeigedaten:

Hier Code:

showCommentsExpenseDetailItem: function(event){ 
       var popover = sap.ui.xmlfragment("la.incloud.rva.aprobaciones.view.components.popover-comment-item-detail", this); 
       this.getView().addDependent(popover); 
       popover.openBy(event.getSource()); 
      } 

Und das XML-Fragment:

<core:FragmentDefinition 
    xmlns="sap.m" 
    xmlns:core="sap.ui.core"> 
    <Popover 
     showHeader="false" 
     placement="Bottom"> 
     <TextArea value="{Comments}" growing="true" growingMaxLines="4" width="100%"/> 
    </Popover> 
</core:FragmentDefinition> 

ich angenommen, dass "{Kommentare}" ist der richtige Weg des Aufrufens von Eigenschaften von Listenelementen.

Es scheint, dass ich falsch liege ...

Antwort

0

Ich gehe davon aus, dass die Comments Eigenschaft auf eine Einheit des Satzes SelectExpenseDetails Entität gehört. Das Problem, mit dem Sie konfrontiert sind, liegt tatsächlich an einem falschen Bindungspfad.

Sie haben Ihr Popup als abhängig von der Ansicht selbst angehängt. Dies bedeutet, dass alle seine relativen Bindungen (wie die für den Wert des Textbereichs) basierend auf dem Bindungskontext der Ansicht aufgelöst werden. Wenn die Ansicht an nichts gebunden ist, wird die Bindung nicht aufgelöst.

Um dies zu umgehen, sollten Sie das Popup selbst an den richtigen Pfad binden, der von dem gedrückten Element stammt. So sollten Sie Ihre Event-Handler wie so einstellen:

showCommentsExpenseDetailItem: function(event){ 
    var popover = sap.ui.xmlfragment("la.incloud.rva.aprobaciones.view.components.popover-comment-item-detail", this); 
    this.getView().addDependent(popover); 
    popover.bindElement(event.getSource().getBindingContext().getPath()); 
    popover.openBy(event.getSource()); 
} 

auch, erstellen Sie ein neues Popup jedes Mal, wenn Sie die Taste drücken, können Sie das Popup stattdessen wieder zu verwenden (entweder schaffen es deklarativ in der Ansicht oder Speicher es als eine Eigenschaft des Controllers).

+0

Aus Neugier. Popup als abhängig von der Ansicht zu befestigen ist eine gute Übung? Wenn nicht, was wäre der richtige Weg? –

+0

Es ist eine sehr gute Übung. Wenn Sie das Popup/Dialogfeld nicht als abhängig von _etwas_ anhängen, müssen Sie seinen Lebenszyklus selbst verwalten (hauptsächlich um es zu zerstören, wenn Sie es nicht mehr benötigen). Und die Aussicht ist ein guter Ort, um es hinzuzufügen. Sie können das Popup [deklarativ] (https://openui5.hana.ondemand.com/#docs/guide/234320f8d8ee45b39c60893116d60351.html) auch zu Ihrem Kontrollbaum hinzufügen, aber Sie werden mit diesem [unfixed bug] konfrontiert werden (https: // github.com/SAP/openui5/issues/1355) (deshalb füge ich im Allgemeinen die Dialoge in der abhängigen Aggregation von zB einem Page-Steuerelement in meiner Ansicht hinzu). –

+0

Danke für Ihre Erklärung! –

Verwandte Themen