6
votes

Passez un autre contrôleur lors de l'instancitation d'un fragment dans SAPUI5

dans le SAPUI5 / openui5 xmlfragment Documentation Le troisième paramètre est un contrôleur permettant de manipuler les actions du fragment.

Ceci est essentiel pour un fragment de dialogue où il y a des boutons pour appuyer sur, etc.

la plupart du temps que j'ai vu Ceci instancié comme ce ou sap.ui.getcore (). SYID ('<élément>'). getController ())

Voir un exemple à Fragment non Obtenir le contrôleur correct

en raison de la complexité de Une boîte de dialogue particulière que j'aimerais avoir un contrôleur séparé pour cela.

J'ai regardé autour de cela et j'ai eu quelques tentatives, mais jusqu'à présent, pas de succès.

J'ai mis un exemple de travail sur GITUB d'utiliser Ceci .

Mais je voudrais instancier dialog.js comme contrôleur pour la boîte de dialogue Dialog.fragment.xml à partir de Initial.View.Controller < / Code>

Tous les preneurs?

Demandes de tirage volontiers reçues.

Le creux de l'exemple est le suivant (c'est le fichier initial.Controller.js) : xxx

});

merci.


2 commentaires

S'il vous plaît poster l'exemple (simplifié) que vous avez ici aussi. (Politique Stackoverflow)


Fait merci @ gábor-bakos


3 Réponses :


2
votes

seul exemple que je pourrais trouver près de la vôtre était dans la pénurie de matériaux FIORI App xxx

beaucoup d'exemples d'injection d'un contrôleur lorsque le fragment a été appelé à partir d'une classe d'assistance. La classe d'assistance favorise la réutilisation, par exemple le même fragment de dialogue peut être appelé à partir de plusieurs vues / composants. La méthode de la classe d'assistance pour la configuration de la boîte de dialogue est appelée à partir d'un contrôleur et que le paramètre OController est défini sur 'Ceci'.

hth jsp


0 commentaires

2
votes

J'ai copié un contrôleur existant.js et le renommé.

Puis, instancié que comme un ci-dessous, et l'a transmis avec le fragment.

var onewcontroller = nouveau sap.ui.core.mvc.controller ("myProject.dialogcontroller"); this._odialog = sap.ui.xmlfragment ("myPopup", "myProject.fragments.mypopup", onewcontroller);

Tous les événements sont maintenant gérés dans une onewcontroller, plutôt que le précédemment utilisé "Ceci" ...


0 commentaires

2
votes

(juste arrivé à l'aéroport de Syd)

Tout ce que vous manquez est le xxx

dans votre initial.controller.js .

a poussé une solution rapide dans une branche à votre repo et ouvert un PR


0 commentaires