2016-04-03 20 views
3

Başlığında adı geçen NetBeans hatasıyla AngularJS uygulamasını çalıştırdıktan sonra görüntülenir. Yığının aşırı yüklendiği herhangi bir nokta göremiyorum, gördüğünüz gibi sadece giriş formu kullanımı için iki değişken başlatabilirim (AngularJS maceramın başlangıcındayım). Bazı donanım sorunları olabilir mi yoksa bilinçsiz bir hata mı yapıyorum?AngularJS - RangeError: 'Uygulama başlatıldıktan sonra maksimum çağrı yığını boyutu aşıldı

hatası:

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> 

cevap

4

Çünkü Bu hatayla yüzden o '/' yolu için bu dairesel yükleme index.html sayfasını hem sayfa ve yük index.html için tüm komut dosyalarını yükleyerek.

dashboard.html içinde komut dosyalarınızı tekrar yüklemenize gerek yoktur, sadece bilgilerinizi başka bir şey yazmayın. Ve giriş formunuz login.html gibi başka bir sayfaya taşınır ve "/" yolunda bu sayfaya bakın.

gibi:

rota sağlayıcı:

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

index.html sayfa

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

login.html sayfa

<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> 

ve 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> 

Bu yük için yön üzerinde mükemmel

+0

Önerinize göre dashboard.html dosyasını değiştirdim ve hata çözülemedi –

+0

Dairesel referans yapan herhangi bir işlev var mı? giriş bilgisini 'login.html 'gibi başka bir html sayfasına kaydırarak ve' '/'' yolu bu sayfayı 'index.html' @Mike –

+0

yerine "templateUrl" olarak işaretleyerek güncelleştirebilirsiniz. iş @Mike –

0

kullanımı komut kontrolünü çalışacak olabilir senaryonuz tekrar tıpkı diğer bilgileriniz hiçbir şey yazma dosyaları. Ve giriş formunuz login.html gibi başka bir sayfaya taşınır ve "/" yolunda bu sayfaya bakın.

İlgili konular