2016-09-30 2 views
0

Bester meine Frage mit einem Beispiel zu erklären: Die Ansicht:verschiedene OData Pfade für Bindungen in einer einzigen Ansicht

<navContainer> 
<page id="first"> 
<label text="{name}"/> 
</page> 
<page id="second"> 
<label text="{car}"/> 
</page> 
</navContainer> 

Das Modell ist ein OData-Dienst. Für die 'erste' Seite möchte ich die Entität '/ EmployeeSet (0)' und für die 'zweite' Seite die Entität '/ CarSet (0)' verwenden.

Bisher kam ich mit dieser Technik, aber es funktioniert nicht für mich:

this.byId("first").bindElement("/EmployeeSet(0)"); 
this.byId("second").bindElement("/CarSet(0)"); 

Was ist der richtige Weg, die Bindung für jede Seite eingestellt? Kann dies immer noch mit einem einzelnen Modell funktionieren und ich muss daher nicht auf ein benanntes Modell in der Ansicht verweisen wie 'text = "{secondModel> car}"'?


Update: Die automatische vollständige Liste in der WebIDE nicht „Bindung“ zeigt, aber das ist, was ich brauchte. Es klappt.

enter image description here

Antwort

0

Ihr Code sieht gut aus, ich denke, es ist ein Problem woanders. Haben Sie auch überprüft, ob der Server Daten zurückgibt? Was erwarten Sie von der oben aufgeführten Ansicht?

Wie auch immer, hier ist ein little jsbin example skizzierte ich nur für dich (siehe unten). binsElement() ist eigentlich die gleiche binding = "" in der Ansicht.

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <title>SAPUI5 single file template | nabisoft</title> 
     <script src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js" 
      id="sap-ui-bootstrap" 
      data-sap-ui-theme="sap_bluecrystal" 
      data-sap-ui-libs="sap.m" 
      data-sap-ui-bindingSyntax="complex" 
      data-sap-ui-compatVersion="edge" 
      data-sap-ui-preload="async"></script> 
      <!-- use "sync" or change the code below if you have issues --> 

     <!-- XMLView --> 
     <script id="myXmlView" type="ui5/xmlview"> 
      <mvc:View 
       controllerName="MyController" 
       xmlns="sap.m" 
       xmlns:core="sap.ui.core" 
       xmlns:mvc="sap.ui.core.mvc"> 

       <Panel id="panel1" binding="{/Customers('ALFKI')}"> 
        <Text text="{CompanyName}"/> 
       </Panel> 

       <Panel id="panel2" binding="{/Customers('ANATR')}"> 
        <Text text="{CompanyName}"/> 
       </Panel>     

      </mvc:View> 
     </script> 

     <script> 
      sap.ui.getCore().attachInit(function() { 
       "use strict"; 

       //### Controller ### 
       sap.ui.define([ 
        "sap/ui/core/mvc/Controller", 
        "sap/ui/model/odata/v2/ODataModel" 
       ], function (Controller, ODataModel) { 
        "use strict"; 

        return Controller.extend("MyController", { 
         onInit : function() { 
          this.getView().setModel(
           new ODataModel("https://cors-anywhere.herokuapp.com/services.odata.org/V2/Northwind/Northwind.svc/", { 
            json : true, 
            useBatch : false 
           }) 
          ); 
         } 
        }); 
       }); 

       //### THE APP: place the XMLView somewhere into DOM ### 
       sap.ui.xmlview({ 
        viewContent : jQuery("#myXmlView").html() 
       }).placeAt("content"); 

      }); 
     </script> 

    </head> 

    <body class="sapUiBody"> 
     <div id="content"></div> 
    </body> 
</html> 

Hier ist eine weitere jsbin example using NavContainer & Pages (basierend auf dem NavContainer Beispiel aus der Explored App). Und das jsbin example is the same but uses bindElement().

+0

Danke für Ihr Arbeitsbeispiel Nabi. Ich versuche, die Bindung für die Seite sap.m. festzulegen (ich habe verschiedene Seiten in einem Navcontainer), aber das "binding =" - Attribut für eine scheint nicht zu existieren? Ich sehe nur "bindingContexts". – Pieter

+0

bindElement() existiert, das bedeutet, dass Sie auch bind = "" in der Ansicht verwenden können. Es ist das gleiche. – Nabi

+0

na ja, ich denke das WebIDE könnte hier und da verbessert werden ... ;-) Jedenfalls habe ich 2 neue jsbins hinzugefügt. – Nabi

Verwandte Themen