angular js маршрут не работает

У меня есть следующий код. Все, что я пытаюсь сделать, это создать простое приложение для входа и панели инструментов. после успешного входа в систему пользователь может видеть панель инструментов, для которой у меня есть два входа в систему и панель управления. Первоначально маршрут входа в систему используется по умолчанию, после успешного входа в систему я хочу направить маршрут на панель инструментов, и соответствующий шаблон и контроллер должны быть загружены, но почему-то это не работает. Мне нужна помощь, чтобы понять, что не так

index.html

<html lang="en" ng-app="salesApp">
<body ng-controller="loginController">
    <form name="loginForm">
        <!--login form-->
    </form>
    <script src="./js/lib/angular.min.js"></script>
    <script src="./js/lib/angular-route.min.js"></script>
    <script src="./js/app/salesApp.js"></script>
    <script src="./js/controller/loginController.js"></script>
    <script src="./js/services/communicationService.js"></script>

</body>
</html>

логинконтроллер.js

app.controller('loginController', function($scope, $http, communicationService, $location){
    $scope.isLoginFailed = false;
    $scope.login= function(){
        $http.get("http://localhost:8080/login?username=" + $scope.user.username + "&password=" + $scope.user.password)
        .success(function(response){
            if(response.sessionId && response.loginSucceeded){
                $location.path("/login");
            }else{
                $scope.isLoginFailed = true;
            }
        });
    }
});

salesApp.js

 var app = angular.module("salesApp", ['ngRoute']);
app.config(['$routeProvider',
        function($routeProvider) {
            debugger;
            $routeProvider.
                when('/login', {
                    templateUrl: '../../login.html',
                    controller: 'loginController'
                }).
                when('/dashboard', {
                    templateUrl: '../../dashboard.html',
                    controller: 'dashBoardController'
                }).
                otherwise({
                    redirectTo: '/login'
                });
        }]);

app.controller('dashBoardController', function($scope, $http, communicationService){
    $scope.sessionData = communicationService.getSessionData();
    $scope.isValidSession - $scope.sessionData.sessionId !== null ? true : false;
    $scope.isValidSession = $scope.isValidSession && $scope.sessionData.loginSucceeded;
}); 

панель инструментов.html

<html ng-app="salesApp">
<head>
</head>
<div ng-view ng-controller="dashBoardController">
<h1>
demo
</h1>
</body>

но ни логин, ни маршрут панели управления не запускаются. Может ли кто-нибудь помочь мне узнать, что я делаю неправильно?


person nikhil mehta    schedule 22.03.2015    source источник


Ответы (1)


Вам не нужно повторять директивы angular ng-app и ng-view ng-controller="dashBoardController" в частичных шаблонах. Измените dashboard.html следующим образом:

<h1>demo</h1>

Однако в index.html вы должны где-то поставить ngView. Он будет заполнен загруженными шаблонами:

<div ng-view></div>

Проверьте демо с фиксированным кодом:

Демо: http://plnkr.co/edit/Is3oXmkcRvDYkiAuvnCF?p=preview

person dfsq    schedule 22.03.2015
comment
большое спасибо. но все же у меня есть одно сомнение, если я поставлю ng-view в тело вместе с ng-controller, консоль выдаст ошибку. можешь объяснить почему так. но если я помещаю ng-view в div в теле, он отлично работает - person nikhil mehta; 23.03.2015
comment
На странице может быть только одна директива ngView. Вложенные представления не могут иметь внутренних ngView. - person dfsq; 23.03.2015