Como controlar rotas de páginas no controlador?
-
21-12-2019 - |
Pergunta
OnsenUI é ótimo.Rápido e fácil.No entanto, não há muita documentação para controlar a lógica Onsen no controlador.
Por exemplo, quero fazer um $location.path('/newpath') dentro de um controlador.Como é feito em Onsen?Eu tentei "ons.navigator.pushpage ('parciais/mais lastjob.html');" Na minha função do controlador, mas não funciona.Estamos limitados a ng-click no Onsen para ir para outra página?
Obrigado.
Solução
No Onsen UI 1.04, você pode acessar o navegador de dentro do controlador da seguinte maneira.
$rootScope.ons.navigator.pushPage('new_page.html');
Outra maneira é
$rootScope.ons.$get('#navigator').pushPage(pagename);
onde #navigator
é o id
do navegador que você colocou em s.t.
<ons-navigator id="navigator" page="page1.html"></ons-navigator>
Este método pode escolher qual navegador você usa.
A terceira forma é a obtenção do escopo do navegador.Por exemplo,
var element = document.querySelector( ".navigator-container");
var scope = angular.element( element ).scope();
scope.pushPage(pagename);
O nome da classe .navigator-container
é um nome de classe integrado do onsen ui navigator.Isso funciona bem mesmo no onsen ui 1.0.
adicionando:exemplo de $rootScope
myapp.controller('myCtrl', function($scope, $rootScope) {
$scope.pushPage = function(pagename) {
$rootScope.ons.navigator.pushPage(pagename);
}
});