Wie steuere ich Seitenrouten im Controller?
-
21-12-2019 - |
Frage
OnsenUI ist großartig.Schnell und einfach.Allerdings gibt es nicht viel Dokumentation zur Steuerung der Onsen-Logik im Controller.
Ich möchte zum Beispiel einen $location.path('/newpath') innerhalb eines Controllers ausführen.Wie wird es in Onsen gemacht?Ich habe "ons.navigator.pushPage ('partials/letztesjob.html') versucht;" in meiner Controller -Funktion, funktioniert aber nicht.Sind wir darauf beschränkt, in Onsen auf ng-click zu klicken, um zu einer anderen Seite zu gelangen?
Danke.
Lösung
In Onsen UI 1.04 können Sie wie folgt vom Controller aus auf den Navigator zugreifen.
$rootScope.ons.navigator.pushPage('new_page.html');
Ein anderer Weg ist
$rootScope.ons.$get('#navigator').pushPage(pagename);
Wo #navigator
ist der id
des Navigators, den du auf s.t. gesetzt hast.
<ons-navigator id="navigator" page="page1.html"></ons-navigator>
Mit dieser Methode können Sie auswählen, welchen Navigator Sie verwenden.
Der dritte Weg ist der, den Navigatorbereich zu erhalten.Zum Beispiel,
var element = document.querySelector( ".navigator-container");
var scope = angular.element( element ).scope();
scope.pushPage(pagename);
Der Klassenname .navigator-container
ist ein integrierter Klassenname von Onsen UI Navigator.Das geht sogar in Onsen UI 1.0 gut.
Hinzufügen:Beispiel von $rootScope
myapp.controller('myCtrl', function($scope, $rootScope) {
$scope.pushPage = function(pagename) {
$rootScope.ons.navigator.pushPage(pagename);
}
});