2016-08-16 1 views
0

Ich habe einen $ state.go-Aufruf, der nach zwei Factory-HTTP-Postaufrufen ausgeführt wird, die zu einer Dashboard-style-Seite umleitet. Zu keinem Zeitpunkt wird jedoch die zugehörige Vorlagendatei geladen, wobei im Wesentlichen eine weiße Seite geladen wird. Eine Aktualisierung an diesem Punkt führt zum Laden der gesamten Seite.

Ich bin nicht klar, was die Ursache ist hier, wie die Einstellungen im Router übereinstimmen mit dem, was zu erwarten ist, wie ich auf anderen Seiten gesehen haben. Ich habe den folgenden Code angehängt.

//pertinent router code 
app.config(function($stateProvider, $urlRouterProvider) { 
    $stateProvider 

    .state('login', { 
    url: "/login", 
    templateUrl: "js/users/templates/login.html", 
    controller: 'LoginController' 
    }) 

    .state('dashboard', { 
    url: '/dashboard', 
    views: { 
     'menuContent' :{ 
     abstract: true, 
     templateUrl: 'js/users/templates/dashboard.html', 
     controller: 'DashboardController' 
     } 
    } 
    }) 

//Segment from LoginController fired by form submit 
usersService.usersFactory.authenticate(UserData).then(function successCallback(resp) { 
    if (resp !== undefined) { 
    $scope.go("dashboard"); 
    } else { 
    //Not a valid login 
    } 
}); 
+0

in Ihrer Route behalten 'Cache: false' als eine Eigenschaft als Ihr Problem wird gelöst werden. Beispiel: '.state ('login', { url:"/login ", cache: false, templateUrl:" js/users/templates/login.html ", Controller: 'LoginController' })' –

Antwort

0

Sein $state.go nicht $scope.go Bitte den folgenden Code in Ihrem Controller verwenden.

usersService.usersFactory.authenticate(UserData).then(function successCallback(resp) { 
    if (resp !== undefined) { 
    $state.go("dashboard"); 
    } else { 
    //Not a valid login 
    } 
}); 
1

Soweit ich mit Ihrem Snippet gibt es zwei Probleme berichten

staatliche Definition

views: { 
    'menuContent' :{ 
     abstract: true, 
     templateUrl: 'js/users/templates/dashboard.html', 
     controller: 'DashboardController' 
    } 
} 

Sie die Eigenschaft setzt abstract: true Ihrer Meinung nach ist das die falsche Stelle Setzen Sie es, sollte es Teil der Zustandsdefinition sein. Wenn Sie Ihren Status als abstrakt festlegen, wird eine Ausnahme ausgelöst, da abstrakte Zustände nicht direkt navigiert werden können. Mein Vorschlag wäre, diese Eigenschaft aus Ihrem Zustand zu entfernen, da Sie es eindeutig nicht brauchen.

Sie können mehr über das abstrakte Verhalten bei ui-router docs

Ein abstrakter Staat wird nie direkt aktiviert werden, lesen, aber vererbten Eigenschaften ihrer gemeinsamen Kinder heißt es bieten können.

Staat umleiten

usersService.usersFactory.authenticate(UserData).then(function successCallback(resp) { 
     if (resp !== undefined) { 
     $scope.go("dashboard"); 
     } else { 
     //Not a valid login 
     } 
    }); 

Sie verweisen $scope.go wenn es $state.go sein sollte.