Übergeben Sie einen anderen controller beim instanziieren eines fragments in SAPUI5
In das SAPUI5 /OpenUI5 xmlfragment Dokumentation der Dritte parameter ist ein controller für die Handhabung von Aktionen aus dem fragment.
Dies ist entscheidend für ein dialog-fragment, wo gibt es Knöpfe zu drücken, etc.
Meisten der Zeit, die ich gesehen habe, diese instanziiert wie this
oder sap.ui.getCore().byId('<element>').getController())
Sehen Sie ein Beispiel, bei Fragment nicht bekommen richtigen Controller
Aufgrund der Komplexität in einem bestimmten dialog hätte ich gerne noch einen separaten controller für Sie.
Ich sah sich um und hatte ein paar versuche, aber bisher nicht erfolgreich.
Habe ich ein funktionsfähiges Beispiel auf github mit this
.
Aber ich möchte instanziieren Dialog.js
als controller für die Dialog.fragment.xml
aus initial.view.controller
Irgendwelche Abnehmer?
Pull-Anfragen gerne empfangen.
Den Kern des Beispiels ist wie folgt (dies ist die initial.controller.js) :
sap.ui.controller("sc.test.view.initial", {
oDialog: null,
openTestDialog: function(){
console.log("in open dialog");
//instantiate the other controller
var oDialogController = new sc.test.view.Dialog();
//this next commented line is the 'normal' way to do it
//oDialog = new sap.ui.xmlfragment( "sc.test.view.Dialog", this); //oDialogController);
//this is what I would like to achieve
oDialog = new sap.ui.xmlfragment( "sc.test.view.Dialog", oDialogController);
oDialog.open();
},
onCartDialogCancel:function(oEvent){
//this function would then be in the other controller but how to get a handle on the dialog?
oDialog.close();
}
});
Dank.
- Poste bitte die (vereinfachte) Beispiel haben Sie hier auch. (Stackoverflow-Richtlinie)
- Erledigt, Dank @Gábor-bakos
Du musst angemeldet sein, um einen Kommentar abzugeben.
(Habe gerade auf SYD airport)
Alle du bist fehlt, ist die
in Ihrem
initial.controller.js
.Schob einen quick-fix in einer Filiale Ihrer repo-und eröffnet eine PR
nur Beispiel, die ich finden konnte in der Nähe zu verkaufen war in der Material-Knappheit Fiori app
viele Beispiele, die Injektion einen controller, wenn das fragment genannt wurde aus einer helper-Klasse. Die helper-Klasse fördert die Wiederverwendung, z.B. gleiche dialog-fragment aufgerufen werden kann, mehrere Ansichten/Komponenten. Die helper-Klasse die Methode für den dialog setup aufgerufen, die in einem controller, und die oController-parameter ist auf 'diesem'.
hth
jsp
Ich eine vorhandene kopiert controller.js und umbenannt.
Dann instanziiert, die als unten, und übergeben Sie es durch mit dem fragment.
var oNewController = new sap.ui.core.mvc.Controller("myProject.DialogController");
diese._oDialog = sap.ui.xmlfragment("myPopup","myProject.Fragmente.myPopup", oNewController);
Alle eventing ist jetzt umgeschlagen in oNewController, anstatt der bisher verwendeten "dieses"...