2017-04-20 3 views
0

Ich versuche, in meiner sapui5 aplication auf FioriKann nicht Eigentum ‚navTo‘ undefinierte

_onPageNavButtonPress: function() { 
     var oHistory = History.getInstance(); 
     var sPreviousHash = oHistory.getPreviousHash(); 

     if (sPreviousHash !== undefined) { 
      window.history.go(-1); 
     } else { 
      var oRouter = sap.ui.core.UIComponent.getRouterFor(this); 
      oRouter.navTo("default", true); 
     } 

    }, 

entfalten eine Navigationstaste tun lesen Aber wenn ich in der Konsole zeigt im Schiff Schaltfläche klicken kann nicht Eigentum ‚navTo‘ lesen von undefined

+0

Anscheinend ist der oRouter nicht definiert ist. Ist diese Methode Teil eines Controllers innerhalb einer Komponente? Sind Sie sicher, dass das "This" korrekt gebunden ist (d. H. Es zeigt auf Ihre Komponente)? –

+0

Ja, diese Methode ist Teil eines Controllers –

Antwort

0

ich es gelöst.

Unten ist der neue Code

onInit: function(){ 
      var oRouter = sap.ui.core.UIComponent.getRouterFor(this); 
     }, 

     onBack: function(){ 
     var oHistory = sap.ui.core.routing.History.getInstance(); 
     var sPreviousHash = oHistory.getPreviousHash(); 
     window.history.go(-1); 
     }, 
0

Sind Sie sicher, dass this auf den richtigen Bereich verweist. Wenn ich nicht falsch bin, wenn ein Ereignis ausgelöst wird, zeigt this auf den Bereich Komponente.

So etwas wie dies funktioniert für mich in diesem Snippet: https://jsbin.com/doxopodule/edit?html,output

onInit: function() { 
    this.oRouter = UIComponent.getRouterFor(this.getView()); 
}, 

_onPageNavButtonPress: function() { 
    var oHistory = History.getInstance(); 
    var sPreviousHash = oHistory.getPreviousHash(); 

    if (sPreviousHash !== undefined) { 
     window.history.go(-1); 
    } else { 
     this.oRouter.navTo("default", true); 
    } 
} 
+0

Jetzt erhalte ich einen Fehler ReferenceError: UIComponent ist nicht definiert –

+0

Eigentlich ist Event-Handler 'this' Kontext standardmäßig an den Controller gebunden. @RubensCesar Sie erhalten UIComponent als undefiniert, wahrscheinlich, weil Sie es nicht in [sap.ui.define] deklariert haben (https://openui5.hana.ondemand.com/#docs/api/symbols/sap.ui.html# .define) Anruf. –

+0

Offensichtlich sollten Sie UIComponent am Anfang erklären, um es wie ich zu nennen. Wenn nicht, können Sie es direkt als 'sap.ui.core.UIComponent' aufrufen. Wie auch immer, ich bin froh zu sehen, dass das, was Sie als Lösung markiert haben, im Grunde mein Ausschnitt ist ... rufen Sie den Router im onInit-Ereignis an und verwenden Sie es dann in Ihrem 'onBack'-Ereignis ... Können Sie mir erklären, warum Sie? Erhalten Sie den vorherigen Hash, wenn Sie ihn dann nicht in den IF-Anweisungen auswerten? Wenn Sie dies nicht tun, wie ich Ihnen in meinem Snippet erkläre, wird es wahrscheinlich fehlschlagen, wenn ich nach einer tiefen Link-Navigation zurück navigiere ... –

Verwandte Themen