UI5-Anwendung bricht beim Aufruf als Komponente
So, ich habe das UI5-Anwendung, die perfekt funktioniert gut, wenn genannt thru index.html aber es bricht (Ressourcen, die nicht gefunden, konnte nicht geladen werden,Fehler 404 etc), wenn ich versuche zu nennen, wie Komponente. Sowohl die Anwendungen (Anrufer - & Aufgerufene) sind auf Gateway
Hier ist der Programm-Ordner-Struktur.
callee_app-Struct.jpg
link to GitHub - https://github.com/mailsandip/component_test
alle Ansichten sind unter zui5_trip_confirmation -> Ordner sichten..Die Bilder und Modelle sind in den jeweiligen Ordnern.
Den component.js ist unter dem Ordner Komponenten, und ist definiert als
//define a new UIComponent
jQuery.sap.declare("components.Component");
jQuery.sap.require("sap.ui.core.UIComponent");
jQuery.sap.require("sap.ui.commons.Button");
jQuery.sap.require("sap.ui.table.Table");
//new Component
sap.ui.core.UIComponent.extend("components.Component", {
metadata : {
properties : {
text: "string"
}
}
});
components.Component.prototype.createContent = function(){
/* trying to register the path zui5_trip_confirmation where all the views are stored */
sap.ui.localResources("zui5_trip_confirmation");
//jQuery.sap.registerModulePath('zui5_trip_confirmation','/sap/bc/ui5_ui5/sap/zui5_trip_conf/zui5_trip_confirmation');
this.oView = sap.ui.jsview("idHome", "zui5_trip_confirmation.views.Home");
return this.oView;
};
Den Anrufer Anwendung ruft es als
jQuery.sap.registerModulePath('components','/sap/bc/ui5_ui5/sap/zui5_trip_conf/components');
var oComp1 = sap.ui.getCore().createComponent({
name: "components",
id: "Comp1",
settings: {text: "Hello World"}
});
var oCompCont1 = new sap.ui.core.ComponentContainer("CompCont1", {
component: oComp1
});
oCompCont1.placeAt("content");
Wenn ich den Anrufer Anwendung, ich bekomme die Ressource nicht gefunden-Fehler auf der Konsole. Grundsätzlich ist die Komponente ist nicht in der Lage, den Pfad auflösen, um die Ansichten/Modelle/Bilder.
Was könnte hier falsch sein?
Grüße
Sandip
InformationsquelleAutor user3161840 | 2014-02-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit
Ihnen sagen, den Kern zu suchen, für alles, was beginnt mit "Komponenten" in "/sap/bc/[...]".
Dann sagen Sie, dass der name der Komponente ist "Komponenten". Sollte das nicht heissen "Komponenten.Komponente"?
Ok, Update mit Beispiel:
(Ich hoffe das macht es klarer)
Der wichtigste Teil: Wir registrieren den Pfad zu dem Ordner, der die Komponente Datei, und weisen Sie Sie ein Präfix. In der Komponente beginnen wir jedes einzelne Objekt/Element/Control/etc. mit dem gleichen Präfix wie die Komponente. (In deinem Fall: "zui5_conf_try").
Erstellt habe ich das Beispiel auf meinem server: http://dev.himmelrath.net/ui5/so_componentExample/ und Sie können alle Dateien herunterladen hier: http://dev.himmelrath.net/ui5/so_componentExample.zip
Außerhalb der Komponente, bei der Erstellung der ComponentContainer in der index.html wir registrieren die Pfade aller, die Einzelteile durch die Registrierung seines Präfixes.
index.html:
zui5_conf_try/Components.js:
zui5_conf_try/views/Home.view.js:
zui5_conf_try/views/Home.controller.js:
Wenn Sie eine Komponente erstellen, mit "createComponent", sollten Sie die Component.js - dies ist eine Konvention. Wenn Sie registerModulePath, die Sie gerade sagen, der Kern, wo zu suchen, wenn Sie sich "xyz" sieht es für alles, was beginnt mit "xyz"." im Pfad. Also "xyz.Komponente" Aussehen würde, für "xyz/Component.js" während "xyz.controls.MyControl" versuchen würde zu laden "xyz/controls/MyControl.js". Es läuft auf eine sehr einfache string-Ersetzung "." -> "/".
Sirion - wenn ich das richtig verstanden habe, sagen Sie, ich hätte erwähnen müssen Component.js explizit beim erstellen der Komponente??? Die component.js verfügbar unter Komponenten den Ordner, seine nur, dass ich nicht erwähnen Sie es während der Erstellung. Überprüfen Sie das sap-docs sapui5.hana.ondemand.com/sdk/docs/guide/NewComponent.html..It ist nicht notwendig, es zu erwähnen ausdrücklich..
Es ist nicht erforderlich, ausdrücklich zu. In der Dokumentation kann man sehen, dass die Komponente name endet mit ".Komponente" dies ist der Schlüssel. Beispiel: ich sage registerModulePath("ein.b.c", "xxx") - das bedeutet, dass, wenn ich versuche zu laden/erstellen "ein.b.c.Komponente" Kern qould versuchen Sie zu laden "xxx/Component.js" - wenn ich versuche zu laden "ein.b.c.was auch immer" es Aussehen würde, für "xxx/whatever.js". Btw: Wenn ich mich richtig erinnere, localResources("abc") nicht einfach eine registerModulePath("abc", "abc")
Der name der Komponente hat am Ende, mit .Komponente. Ich habe erklärt es als jQuery.sap.declare("zui5_conf_try.Komponente"); Das Problem ist, dass die Komponente nicht in der Lage, beziehen sich auf die Ressourcen (Ansichten/Bilder usw) ..Auch wenn ich definiert habe, localResources('views')/localResources('Bilder') innerhalb der Komponente - aber immer noch seine nicht Rendern der views..
InformationsquelleAutor sirion
Ok, so sah es ein bisschen mehr aussieht - die Ressourcen werden nicht geladen Component.js obwohl es ein explizites laden erwähnt
Dies ist, was mich verwirrt, ist der Kern sollte geladen haben, die Ansichten mit Bezug auf die Component.js Lage. Das gleiche problem passiert mit den images Ordner.
Grüße
Sandip
InformationsquelleAutor user3161840