AngularJS-范围错误:''之后超过了最大调用堆栈大小;应用程序启动

AngularJS - RangeError: 'Maximum call stack size exceeded after' application start

本文关键字:调用 启动 堆栈 应用程序 错误 范围 之后 AngularJS- 过了      更新时间:2023-11-18

在NetBeans中运行AngularJS应用程序后,出现标题中提到的错误。我看不到堆栈过载的任何地方,正如您所看到的,我只初始化了两个用于登录表单处理的变量(我正处于AngularJS冒险的开始)。可能是硬件问题,还是我在这里犯了一些无意识的错误?

错误:

RangeError: Maximum call stack size exceeded
    at c (public_html/bower_components/angular/angular.min.js:115:232)
    at http://localhost:8383/LoginJS/bower_components/angular/angular.min.js:115:506
    at q (public_html/bower_components/angular/angular.min.js:7:355)
    at Object.error (public_html/bower_components/angular/angular.min.js:115:475)
    at http://localhost:8383/LoginJS/bower_components/angular/angular.min.js:89:12
    at ra (public_html/bower_components/angular/angular.min.js:69:475)
    at xa (public_html/bower_components/angular/angular.min.js:58:270)
    at xa (public_html/bower_components/angular/angular.min.js:58:402)
    at ba (public_html/bower_components/angular/angular.min.js:56:264)
    at A.link (public_html/bower_components/angular-route/angular-route.min.js:7:224) (13:52:05:371 | error)

app.js

angular.module('myapp', ['ngRoute']).config(function($routeProvider) {
         $routeProvider
                 .when('/', {
                     templateUrl: 'index.html'
         })
                 .when('/dashboard', {
                     templateUrl: 'dashboard.html'
         })
                 .otherwise(({
                     redirectTo: '/'
         }));
});

loginCtrl.js

angular.module('myapp').controller('loginCtrl', function($scope, $location) {
    $scope.submit = function() {
        var username = $scope.username;
        var password = $scope.password;
        if($scope.username == 'admin' && $scope.password == 'admin') {
            $location.path('/dashboard');
        }
    };
})

index.html

<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="bower_components/angular/angular.min.js" type="text/javascript"></script>
        <script src="bower_components/angular-route/angular-route.min.js" type="text/javascript"></script>
        <script src="app.js" type="text/javascript"></script>
        <script src="scripts/controllers/loginCtrl.js" type="text/javascript"></script>
    </head>
    <body ng-app="myapp">
        <div ng-view></div>
        <div ng-controller="loginCtrl">
            <form action="/" id="login">
                Username: <input type="text" name="username" id="username" ng-model="username"><br>
                Password: <input type="password" name="password" id="password" ng-model="password"><br>
                <button type="button" ng-click="submit()">Login</button>
            </form>
        </div>
    </body>
</html>

dashboard.html

<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="bower_components/angular/angular.min.js" type="text/javascript"></script>
         <script src="bower_components/angular-route/angular-route.min.js" type="text/javascript"></script>
        <script src="app.js" type="text/javascript"></script>
    </head>
    <body ng-app="myapp">
        <div ng-view></div>
        some text
    </body>
</html>

因为您为两个页面加载了所有脚本文件,并为循环加载index.html页面的'/'路径加载index.html,所以出现此错误。

dashboard.html中,无需再次加载您的脚本文件,只需编写您的信息,无需其他内容。您的登录表单将移动到另一个页面,如login.html,并参考此页面以获取路径"/"

类似:

路线提供商:

.when('/', {
      templateUrl: 'login.html'
 })

index.html

<body ng-app="myapp">
    <h1>Welcome </h1>
    <div ng-view></div>
</body>

login.html

<div ng-controller="loginCtrl">
      <form action="/" id="login">
          Username: <input type="text" name="username" id="username" ng-model="username"><br>
          Password: <input type="password" name="password" id="password" ng-model="password"><br>
          <button type="button" ng-click="submit()">Login</button>
      </form>
 </div>

dashboard.html

<div ng-controller="CtrlName"> //ng-controller="CtrlName" if need ctrl and also can use ctrl in route provider
   <h2> Dashboard page</h2>
   // all of your information's 
</div>

它可能会完美地工作

在方向上使用脚本控制来再次加载脚本文件,只需不写其他信息。您的登录表单将移动到另一个页面,如login.html,并参考此页面以获取路径"/"