javascript - Angular ngroute : controllers doesnt's work

标签 javascript html angularjs ngroute route-provider

我想使用 ngroute 模块在同一页面中使用不同主题路由我的应用程序,使用此示例:

<html>
   
   <head>
      <title>Angular JS Views</title>
      <script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
      <script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular-route.min.js"></script>
   </head>
   
   <body>
      <h2>AngularJS Sample Application</h2>
      <div ng-app = "mainApp">
         <p><a href = "#addStudent">Add Student</a></p>
         <p><a href = "#viewStudents">View Students</a></p>
         <div ng-view></div>
         
         <script type = "text/ng-template" id = "addStudent.htm">
            <h2> Add Student </h2>
            {{message}}
         </script>
         
         <script type = "text/ng-template" id = "viewStudents.htm">
            <h2> View Students </h2>
            {{message}}
         </script>
      </div>
      
      <script>
         var mainApp = angular.module("mainApp", ['ngRoute']);
         mainApp.config(['$routeProvider', function($routeProvider) {
            $routeProvider.
            
            when('/addStudent', {
               templateUrl: 'addStudent.htm',
               controller: 'AddStudentController'
            }).
            
            when('/viewStudents', {
               templateUrl: 'viewStudents.htm',
               controller: 'ViewStudentsController'
            }).
            
            otherwise({
               redirectTo: '/addStudent'
            });
         }]);
         
         mainApp.controller('AddStudentController', function($scope) {
             console.log("adssadsd");
            $scope.message = "This page will be used to display add student form";
         });
         
         mainApp.controller('ViewStudentsController', function($scope) {
            $scope.message = "This page will be used to display all the students";
         });
			
      </script>
      
   </body>
</html>

在此示例中,在同一页面中路由不同的主题: enter image description here

enter image description here

这样。在我的应用程序中尝试: html文件:

<!DOCTYPE html>
<!-- saved from url=(0066)https://hackerstribe.com/guide/IT-bootstrap-3.1.1/examples/signin/ -->
<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
       <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.js"></script> 

    
      <script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular-route.min.js"></script>
   
    <script type="application/javascript"></script>
    <script src="scripts/login-controller.js"></script>
    <script src="scripts/rest-services.js"></script>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="shortcut icon" href="images/puzzle.png" />

    


    
    <title>Login</title>

    <!-- Bootstrap core CSS -->
    <link href="./styles/bootstrap.min.css" rel="stylesheet">

    <!-- Custom styles for this template -->
    <link href="./styles/signin.css" rel="stylesheet">

    <!-- Just for debugging purposes. Don't actually copy this line! -->
    <!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->

    <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
      <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>

  <body ng-app="StaffManagement" ng-controller="LoginController" ng-fa>

    <div class="container">
<script type = "text/ng-template" id = "addStudent.htm">
            <h2> Add Student </h2>
            {{message}}
         </script>
         
         <script type = "text/ng-template" id = "viewStudents.htm">
            <h2> View Students </h2>
            {{message}}
         </script>
      <form class="form-signin" role="form" ng-controller="LoginController" ng-submit="submitCredentials()"  novalidate>
        <h2 class="form-signin-heading">Hai bisogno di autenticarti</h2>
        <input type="email" class="form-control" placeholder="Email address" required="" autofocus="" id="email" ng-model="staffLoginForm.email"> 
        <input type="password" class="form-control" placeholder="Password" required="" id="password" ng-model="staffLoginForm.pass">
        <label class="checkbox">
          <input type="checkbox" value="remember-me"> Ricordami
        </label>
        <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
      </form>

    </div> <!-- /container -->


    <!-- Bootstrap core JavaScript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
  
      
 
     

</body></html>

js关联文件:

//'use strict'; //questo mi da informazione sull'errore

var app = angular.module("StaffManagement", ['ngRoute']);  

app.controller("LoginController", function($scope, $http, restService) {  
    $scope.stafflogins = [];
    $scope.staffLoginForm = {  
        email: "",
        pass: ""
    };
    $scope.tokenStaffForm = {  
        idtokenstaff: -1,    
        tokenstaff: ""
    };  
    $scope.staffForm = {  
        idstaff : -1,    
        staffType: {
            idstaffType: -1,
            type: ""
         },
        name: "",
        surname: "",
        birthDate: "",
        phone: "",
        gender: true,
        working: true,
        staffLogin: {
            idstaffLogin: -1,
            email: "",
            pass: "" 
          }
    };  
    
   
    
    //8njae3j4b54fpoapftc8aofbfs
    
    //admin: l5qsngh3v9a5f2v9p55ar4h083
    $scope.submitCredentials= function() { 
        restService.login($scope.staffLoginForm, _logsuccess, _logerror);
      
       //$location.url('edit_employee.html');
 //       console.log($scope.staffLoginForm);
       /* $http({  
            method : 'POST',  
            url : 'http://localhost:8080/FoodDrinkDispener/rest/tokenstaff',
            data : angular.toJson($scope.staffLoginForm), 
            }).then(function successCallback(response) {  
                    if (typeof response.data === 'object'){
                        _logsuccess(response)
                        return response.status;
                     }
                    else 
                        _logerror(response);
                    },function (response) { 
                    console.log($scope.tokenStaffForm);
                        _logerror(response);
                    }
                    );*/
            
                }
  

             
    /*        
    function _SetToken(CurrentToken) {
        sessionStorage.setItem("token", (CurrentToken === null) ? null : JSON.stringify(CurrentToken));
        //console.log(CurrentToken);    
    }   
        */
    function _logsuccess(response) {  
        console.log("Loggato correttamente");
        console.log(response.status);
        var CurrentToken = response.data;
      //  _SetToken(CurrentToken);                                        
    }  
            
    function _logerror(response) {  
        console.log("Login fallito");
        console.log(response.status);
       // _SetToken(null);                                      
    } 
       

       /* $http({  
            method : 'GET',
            url : 'http://localhost:8080/FoodDrinkDispener/rest/stafflogin/byemail/'+$scope.staffLoginForm.email 
            }).then(function successCallback(response) {  
        $scope.stafflogins = response.data; 
        }, function errorCallback(response) {  
        console.log(response.statusText);  
        });  
        if(MD5($scope.stafflogins.pass)==$scope.staffLoginForm.pass)*/
            
   
    
    

   //  console.log(sessionStorage.getItem.toString);
    });

app.config(['$routeProvider', function($routeProvider) {
            $routeProvider.
            
            when('/sessionexpired', {
               templateUrl: 'addStudent.htm',
               controller: 'AddStudentController'
            }).
            
            when('/viewStudents', {
               templateUrl: 'viewStudents.htm',
               controller: 'ViewStudentsController'
            }).
            
            otherwise({
               redirectTo: '/addStudent'
            });
         }]);

app.controller('AddStudentController', function($scope) {
        console.log("ciao");
            $scope.message = "This page will be used to display add student form";
         });
         
         app.controller('ViewStudentsController', function($scope) {
               console.log("ciao");
            $scope.message = "This page will be used to display all the students";
         });

在 js 文件中,我放置了我的 Controller 和我的配置:

app.config(['$routeProvider', function($routeProvider) {
            $routeProvider.
            
            when('/sessionexpired', {
               templateUrl: 'addStudent.htm',
               controller: 'AddStudentController'
            }).
            
            when('/viewStudents', {
               templateUrl: 'viewStudents.htm',
               controller: 'ViewStudentsController'
            }).
            
            otherwise({
               redirectTo: '/addStudent'
            });
         }]);

app.controller('AddStudentController', function($scope) {
        console.log("ciao");
            $scope.message = "This page will be used to display add student form";
         });
         
         app.controller('ViewStudentsController', function($scope) {
               console.log("ciao");
            $scope.message = "This page will be used to display all the students";
         });

我也尝试过 console.log("ciao"); ,但是当我尝试这个 url 时:file:///C:/Users/Giacomo%20B/Desktop/progetto%20mainetti/prove%20angular/fddWebapp/login.html#/viewStudents 什么也没有出现,console.log 也没有: enter image description here

问题在哪里?为什么我的 Controller 不起作用?

最佳答案

我看到几个问题:

  1. 你没有 <div ng-view></div>在您的 html 页面中标记
  2. 您已重定向到 '/addStudent' ,但您没有配置此路由(我想 '/sessionexpired' 应该重命名为它)
  3. 您已声明 ng-controller="LoginController"两次,我想最后一次就够了。

关于javascript - Angular ngroute : controllers doesnt's work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41193836/

相关文章:

javascript - 将包含单个整数的数组传递给 Uint8Array 会对传递给它的内容产生什么影响?

javascript - 如何使选择选项值每次更改其值时都重新开始?

javascript - AngularJS 仅在解析时返回两个 http get 请求

angularjs - 全局禁用 ng-animate,然后在某些元素上启用

javascript - 是否可以将 JavaScript 变量的范围限定为函数以及该函数对其自身的递归调用?

javascript - 需要 jquery 通过点击不同的 div 来激活点击

javascript - 如何在一个div中均匀分布几个div

html - 在 MS Edge 中,在输入类型 ="number"中输入文本后占位符文本不会消失

javascript - 在帧之间传递输入字段内的数据

javascript - AngularJS limitTo 过滤器