2016-10-10 5 views
0

Ich verwende ionic und versuche, eine App zu erstellen. Das Problem, das ich habe, ist, dass, wenn ich in einen neuen Zustand navigieren, indem Sie mit:Ionic navigation state.go zeigt vorherige Ansicht

.controller('appCtrl', function($scope, $state) { 
    $scope.navigate = function(path) { 
     $state.go(path); 
    }; 
}) 

Es navigiert zu meiner neuen Ansicht/template sondern zeigt auch die vorherige Vorlage, die ich von oben der neuen Vorlage navigiert. Bilder im Anhang, um das Problem zu demonstrieren.

Theese sind meine Routen

.config(function($stateProvider, $urlRouterProvider) { 
    $stateProvider 
    .state('login', { 
     url: '/login', 
     templateUrl: 'views/auth/login.html', 
     controller: 'loginCtrl' 
    }) 

    .state('signup', { 
     url: '/signup', 
     templateUrl: 'views/auth/signup.html', 
     controller: 'signupCtrl' 
    }); 

    $urlRouterProvider.otherwise('/login'); 
}); 

Controller

.controller('appCtrl', function($scope, $state) { 
    $scope.navigate = function(path) { 
     $state.go(path); 
    }; 
}) 

.controller('signupCtrl', function() {}) 
.controller('loginCtrl', function() {}) 

und meine Taste ruft den neuen Staat:

<button ng-click="navigate('signup')">let's sign up!</button> 

View one

View two

Irgendwelche Ideen, warum das passiert?

Antwort

0

Wo rufen Sie "appCtrl" an?

Wenn "appCtrl" ein Hauptsteuerelement ist, müssen Sie Stateprovider wie folgt ändern;

.config(function($stateProvider, $urlRouterProvider) { 
     $stateProvider 
     .state('app', { 
      url: '/app', 
      abstract: true, 
      templateUrl: 'views/auth/master.html', 
      controller: 'appCtrl' 
     }) 
     .state('app.login', { 
      url: '/login', 
      templateUrl: 'views/auth/login.html', 
      controller: 'loginCtrl' 
     }) 

     .state('app.signup', { 
      url: '/signup', 
      templateUrl: 'views/auth/signup.html', 
      controller: 'signupCtrl' 
     }); 

     $urlRouterProvider.otherwise('/login'); 
    }); 
+0

Hey. Ich verwende die appCtrl nur in meiner index.html, wie folgt: , also rufe ich sie nicht über einen Staatsprovider an. – newbieDevs

0

Warum nicht $location.path verwenden?

.controller('appCtrl', function($scope, $location) { 
    $scope.navigate = function(path) { 
     $location.path(path); 
    }; 
}) 

Liegt der Wert der Weg ist, den Wert der URL Ihrer $stateProvider

Verwandte Themen