2017-10-24 19 views
-2

Wie es in den 20 Unterrichtsstunden der walkthroug gesagt wird, versuche ich ein Modell mit Invoices.json Instanate. Aber als Ergebnis erhalte ich "No data" in einer Liste. Ich habe alle meine Quellen mit den Onces verglichen, die sie in einem Tutorial haben, und sie sind die gleichen (ohne URLs in der index.html)OpenUI5: kann kein Modell

Soweit ich verstehe, ist die Version des SDK ich verwende "1.48 .10 "(ich überprüfe es in einer sap-ui-version.json), also sollte die Instanation funktionieren.

Hier ist meine index.html:

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta charset="utf-8"> 
    <title>Walkthrough</title> 
    <script src="http://localhost:63342/TestOprnUI5/resources/sap-ui-core.js" 
      id="sap-ui-bootstrap" 
      data-sap-ui-theme="sap_bluecrystal" 
      data-sap-ui-libs="sap.m" 
      data-sap-ui-compatVersion="edge" 
      data-sap-ui-preload="async" 
      data-sap-ui-resourceroots='{ 
     "sap.ui.demo.wt": "./testoprnui5/" 
     }'> 
    </script> 
    <script> 
     sap.ui.getCore().attachInit(function() { 
      new sap.m.Shell({ 
       app: new sap.ui.core.ComponentContainer({ 
        name: "sap.ui.demo.wt" 
       }) 
      }).placeAt("content"); 
     }); 
    </script> 
</head> 
<body class="sapUiBody" id="content"> 
</body> 
</html> 

Hier ist InvoiceList.view, xml:

<mvc:View 
     xmlns="sap.m" 
     xmlns:mvc="sap.ui.core.mvc"> 
    <List 
      headerText="{i18n>invoiceListTitle}" 
      class="sapUiResponsiveMargin" 
      width="auto" 
      items="{invoice>/Invoices}" > 
     <items> 
      <ObjectListItem 
        title="{invoice>Quantity} x {invoice>ProductName}"/> 
     </items> 
    </List> 
</mvc:View> 

Hier ist App.view.xml:

<mvc:View 
     controllerName="sap.ui.demo.wt.controller.App" 
     xmlns="sap.m" 
     xmlns:mvc="sap.ui.core.mvc" 
     displayBlock="true"> 
    <App class="myAppDemoWT"> 
     <pages> 
      <Page title="{i18n>homePageTitle}"> 
       <headerContent> 
        <Button 
          icon="sap-icon://hello-world" 
          press="onOpenDialog"/> 
       </headerContent> 
       <content> 
        <mvc:XMLView viewName="sap.ui.demo.wt.view.HelloPanel"/> 
        <mvc:XMLView viewName="sap.ui.demo.wt.view.InvoiceList"/> 
       </content> 
      </Page> 
     </pages> 
    </App> 
</mvc:View> 

Hier component.js:

sap.ui.define([ 
    "sap/ui/core/UIComponent", 
    "sap/ui/model/json/JSONModel", 
    "sap/ui/demo/wt/controller/HelloDialog" 
], function (UIComponent, JSONModel, HelloDialog) { 
    "use strict"; 
    return UIComponent.extend("sap.ui.demo.wt.Component", { 
     metadata: { 
      manifest: "json" 
     }, 
     init: function() { 
      // call the init function of the parent 
      UIComponent.prototype.init.apply(this, arguments); 
      // set data model 
      var oData = { 
       recipient: { 
        name: "World" 
       } 
      }; 
      var oModel = new JSONModel(oData); 
      this.setModel(oModel); 
      // set dialog 
      this._helloDialog = new HelloDialog(this.getRootControl()); 
     }, 
     openHelloDialog: function() { 
      this._helloDialog.open(); 
     } 
    }); 
}); 
Hier

ist die Projektstruktur:

TestOpenUI5 
- resources 
- testopenui5 
-- controller 
--- App.controller.js 
--- HelloDialog.js 
--- HelloPanel.controller.js 
-- css 
--- styles.css 
-- i18n 
--- i18n.properties 
-- view 
--- App.view.xml 
--- HelloDialog.fragment.xml 
--- HelloPanel.view.xml 
--- InvoiceList.view.xml 
-- Component.js 
-- Invoices.json 
-- manifest.json 
- index.html 
- Invoices.json 

PS: Ich habe versucht, Invoices.json zu den verschiedenen Ordnern zu setzen, an die Wurzel und den/testopenui5 Ordner mit dem gleichen Ergebnis. PPS: es sieht aus wie Rechnungen sind nicht im Modell enthalten, aber wie kann ich es überprüfen, um sicher zu sein? Und wo kann ich ein paar Protokolle finden?

+2

coud Sie bitte zeigen Sie Ihre „manifest.json“ Datei, weil es eine Verbindung invoices.json definiert. Sie können die "Protokolle" auf der Registerkarte "Netzwerk" der dev.tools von Chrome überprüfen (die Rechnungsdatei muss angefordert werden). –

+2

vielleicht ein Tippfehler in Ihrem manifest.json? anstelle von Rechnungsrechnungen? Wie auch immer, bitte teilen Sie Ihr manifest.json – n01dea

Antwort

1

Sie sollten das Modell in manifest.json file.Inside models Abschnitt sap.ui5 Abschnitt sollten Sie drei Zeilen Code hinzufügen.

"invoice": { 
    "type": "sap.ui.model.json.JSONModel", 
    "uri": "Invoices.json" 
    } 
0

Yeap, sorry, ich habe meine manifest.json nicht sorgfältig überprüft. Das Problem war, ich habe Rechnungsabteilung nicht innerhalb von Modellen, sondern in der Nähe platziert. Das ist, was ich hatte:

"models": { 
    "i18n": { 
    "type": "sap.ui.model.resource.ResourceModel", 
    "settings": { 
     "bundleName": "sap.ui.demo.wt.i18n.i18n" 
    } 
    } 
}, 
"invoice": { 
    "type": "sap.ui.model.json.JSONModel", 
    "uri": "Invoices.json" 
    }, 
"resources": { 
    "css": [ 
    { 
     "uri": "css/style.css" 
    } 
    ] 
} 

das, was es ist sein sollte:

"models": { 
    "i18n": { 
    "type": "sap.ui.model.resource.ResourceModel", 
    "settings": { 
     "bundleName": "sap.ui.demo.wt.i18n.i18n" 
    } 
    }, 
    "invoice": { 
    "type": "sap.ui.model.json.JSONModel", 
    "uri": "Invoices.json" 
    } 
}, 
"resources": { 
    "css": [ 
    { 
     "uri": "css/style.css" 
    } 
    ] 
} 
+0

Sie können Ihre eigene Antwort annehmen, um andere darüber zu informieren, dass dieses Problem jetzt gelöst ist. – boghyon

Verwandte Themen