2015-11-03 2 views
0

Вот ссылка plunker для кода http://plnkr.co/edit/JwM8t3oNepP3tE1nUXlM?p=info

controller.js

if(($scope.login==='Admin')&&($scope.password==='admin')) 
{ 
    $state.go('login.home'); 
} 

script.js

var DailyUsageApp = angular.module('DailyUsageApp', ['ui.router']); 
DailyUsageApp.config(function($stateProvider, $locationProvider, $urlRouterProvider) { 
    $urlRouterProvider.otherwise('/login'); 
    $stateProvider.state('login', { 
     url: '/login', 
     templateUrl: "login.html", 
     controller: 'authController' 
    }) 
    .state('login.home', { 
     url: '/home', 
     templateUrl: "home.html", 
     controller: 'homeController' 
    }); 
}); 

ответ

4

Причина, по которой ваш код не работает, заключается в том, что вы создаете иерархические состояния, которые не должны быть иерархическими. Выигрывая ваше состояние login.home, вы говорите, что home является ребенком login. Это означает, что при попытке и go('login.home') ui router пытается отобразить состояние входа в систему, а также состояние дома в качестве дочернего. Это означает, что для вашего текущего макета для работы шаблон регистрации должен содержать свой собственный тег ui-view. Лучший способ исправить это просто переименовать свое состояние только home, а затем использовать $state.go('home');

1

Существует an updated plunker

Самое простое решение заключается в НЕ сделать состояние login.home вложен в login.

//.state('login.home', { 
.state('home', { 
    url: '/home', 
    templateUrl: "home.html", 
    controller: 'homeController' 
}); 

Есть также другие решения, как создать мишень для login.home внутри login как это:

<div ui-view=""></div 

Но, как правило, мы не делаем этого. Просто войдите, а затем перейдите к другой государственной иерархии ...

Смежные вопросы