2017-02-08 1 views
0

Ich versuche herauszufinden, wann XML seinen Wert im SAP UI5 anzeigt. Es ist an ein OData-Modell gebunden, also nehme ich an, dass es einen read() durchführen muss, um herauszufinden, welcher Wert angezeigt werden soll. Daher wäre ich in der Lage, diese Informationen in meinem Controller zu verwenden, nachdem das XML read() ausführt.Wann erhält XML seinen Wert zur Anzeige?

example.xml

<ComboBox items="{ 
        path: '/ZSpace_EntitySet', 
        sorter: { path: 'Name' } 
       }"> 
    <core:Item key="{Value}" text="{Name}" /> 
</ComboBox> 

so in Debugging-Modus habe ich versucht this.getView().getModel().getProperty("/ZSpace_EntitySet(...)/propertyHere") tun, aber es gibt nicht definiert. Ich habe es für beide onBeforeShow() und onAfterShow() versucht. Ich habe den Debugger bei diesen Methoden angehalten und die obige Zeile ausgeführt.

Ich denke, dass ich eine Funktion brauche, die direkt ausgeführt wird, nachdem das XML seine Werte anzeigen lässt, da es das read() ausgeführt hat, um das XML aufzufüllen.

Update: Zu der Zeit onBeforeHide() ausgeführt wird, ist das Modell natürlich vorhanden und ich kann die Zeile oben ausführen. Aber das ist viel zu spät, ich möchte die Immobilie schon vorher lesen.

+1

"wenn XML ruft es Wert ist". XML tut nichts. XML ist die Spezifikation eines Datenformats. Was auch immer der Wert ist, es ist kein XML. Wenn Sie herausfinden, was den Wert abruft, können Sie möglicherweise feststellen, wann dies der Fall ist. –

+0

Ja natürlich, aber ich habe nur versucht, die Idee als @StephenS zu bekommen, danke, aber ich habe den Titel geändert, um Ihren Vorschlag hinzuzufügen – SAPUI5GUY

Antwort

0

Sie können einen -Handler an die ComboBox-Bindung anhängen. Dieser Handler wird ausgelöst, wenn die Datenanforderung für das Steuerelement abgeschlossen ist.

XML-Code

<ComboBox id="cmbBox" items="{ 
       path: '/ZSpace_EntitySet', 
       sorter: { path: 'Name' } 
      }"> 
<core:Item key="{Value}" text="{Name}" /> 

Controller-Code

onBeforeRendering : function(){ 
     var oComboBox = this.byId("cmbBox"), 
      oBinding = oComboBox.getBinding("items"); 
     oBinding.attachDataReceived(function(){ 
      window.alert("Data Received"); 
     }); 
} 
+0

Wie habe ich das vergessen, werde ich überprüfen und lassen Sie wissen – SAPUI5GUY

+0

Sieht gut aus, würden Sie zufällig wissen, ob dies mit einfachen Bindings getan werden kann, als ob ich gerade "value = {field}" hätte? Wenn Sie Ihre Methode verwenden, wird die oBinding nicht definiert und ich denke, dass ich eine andere Methode für diese Art der Bindung verwenden muss. – SAPUI5GUY

+0

Ich habe versucht mit der XML-Bindung, aber es hat nicht funktioniert. Leider erwähnt die Dokumentation auch keine Möglichkeit, dies zu tun. –

Verwandte Themen