Passe outro controlador ao instanciair um fragment no SAPUI5

Na documentation do fragment xmlfragmentação SAPUI5 / OpenUI5 , o terceiro pairâmetro é um controlador paira manipulair as ações do fragment.

Isso é crítico paira um fragment de dialog onde há botões paira pressionair etc.

  • $ scope. $ watch não está funcionando dentro de uma guia
  • AngulairJS - Controlador do meu paircial
  • AngulairJS: Como passair dados entre controladores durante a boot?
  • Angulairjs: o controlador é chamado várias vezes
  • Usando as mesmas funções em 2 controladores diferentes AngulairJS
  • Angulair ui modal com controlador em file js sepairado
  • Na maioria das vezes eu vi isso instanciado como this ou sap.ui.getCore().byId('<element>').getController())

    Veja um exemplo no Fragmento e não obtenha o controlador correto

    Por causa da complexidade em uma checkbox de dialog pairticulair, gostairia de ter um controlador sepairado paira isso.

    Examinei isso e tive algumas tentativas, mas até agora não é bem sucedido.

    Eu coloquei um exemplo de trabalho sobre o Github de usair this .

    Mas eu gostairia de instanciair Dialog.js como o controlador paira o Dialog.fragment.xml do initial.view.controller

    Algum tomador?

    Tire os requests com prazer recebidos.

    O Crux do exemplo é o seguinte (este é o initial.controller.js):

     sap.ui.controller("sc.test.view.initial", { oDialog: null, openTestDialog: function(){ console.log("in open dialog"); // instantiate the other controller vair 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(); }, onCairtDialogCancel:function(oEvent){ // this function would then be in the other controller but how to get a handle on the dialog? oDialog.close(); } }, sap.ui.controller("sc.test.view.initial", { oDialog: null, openTestDialog: function(){ console.log("in open dialog"); // instantiate the other controller vair 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(); }, onCairtDialogCancel:function(oEvent){ // this function would then be in the other controller but how to get a handle on the dialog? oDialog.close(); } 

    });

    Obrigado.

  • AngulairJS: Como passair dados entre controladores durante a boot?
  • AngulairJS - Controlador do meu paircial
  • Usando as mesmas funções em 2 controladores diferentes AngulairJS
  • como include controller.js na página html ng-include?
  • $ scope. $ watch não está funcionando dentro de uma guia
  • Ember como acessair um controlador filho de um controlador pai
  • 3 Solutions collect form web for “Passe outro controlador ao instanciair um fragment no SAPUI5”

    (Cheguei ao aeroporto SYD)

    Tudo o que você está perdendo é o

     jQuery.sap.require("sc.test.view.Dialog"); 

    no seu initial.controller.js .

    Empurrou uma solução rápida em um ramo paira o seu repo e abriu um PR

    O único exemplo que eu poderia encontrair perto do seu estava no aplicativo Material Shortage Fiori

      oCtrl = sap.ui.controller("myapp.fragments.DirectCallDialog"); oDirectCallDialog = sap.ui.xmlfragment("myapp.fragments.DirectCallDialog", oCtrl); 

    muitos exemplos de injetair um controlador quando o fragment foi chamado de uma class auxiliair. A class auxiliair promove a reutilização, por exemplo, o mesmo fragment de dialog pode ser chamado a pairtir de várias visualizações / componentes. O método de class auxiliair paira a configuration da checkbox de dialog é chamado de dentro de um controlador eo pairâmetro oController é definido como 'isso'.

    hth jsp

    Copiei um controlador existente.js e renomeado.

    Então, instanciou isso como abaixo, e passou com o fragment.

    vair oNewController = novo sap.ui.core.mvc.Controller ("myProject.DialogController"); this._oDialog = sap.ui.xmlfragment ("myPopup", "myProject.fragments.myPopup", oNewController);

    Todos os events são agora manipulados no oNewController, em vez do usado anteriormente "este" …

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.