路由原因超出了最大调用堆栈大小

时间:2016-09-06 16:06:33

标签: angularjs

我是angularJS的新手。我试着练习一些例子并遇到了一个非常棘手的错误。我花了几个小时来弄清楚RangeError,但我没能克服它。任何人都可以帮我摆脱这个陷阱吗?

在app.js

var sampleApp = angular.module('phonecatApp', ['ngRoute']);

sampleApp .config(['$routeProvider','$locationProvider',
  function($routeProvider,$locationProvider)
  {
    $routeProvider.
      when('/', {
        templateUrl: 'index.html',
      }).
      when('/addOrder', {
        templateUrl: 'add-order.html',
        controller: 'AddOrderController'
      }).
      when('/showOrders', {
        templateUrl: 'show-orders.html',
        controller: 'ShowOrdersController'
      }).
      otherwise({
        redirectTo: '/addOrder'
      });
      $locationProvider.html5Mode({
        enabled: true,
        requireBase: false
        });
  }]);

sampleApp.controller('AddOrderController', function($scope) {

  $scope.message = 'This is Add new order screen';

});


sampleApp.controller('ShowOrdersController', function($scope) {

  $scope.message = 'This is Show orders screen';

});

在index.html中

<!DOCTYPE html>
<head>
</head>
    <h1>weclome to test!</h1>
<body ng-app="phonecatApp" >
<div ng-view></div>

<script src="//code.angularjs.org/1.2.20/angular.js"></script>
<script src="//code.angularjs.org/1.2.20/angular-route.js"></script>
<script src="static/app.js"></script>   
</body>


</html>

在add_order.html

<h2>Add New Order</h2>

{{ message }}

在show_order.html

<h2>Show Orders</h2>

{{ message }}

另外,存储js和html文件的文件夹的错误源目录会导致RangeError?

这是Chrome控制台中显示的错误 enter image description here

4 个答案:

答案 0 :(得分:5)

我认为你正在浏览/,这可能是index.html,其中包括app.js,由于路由需要index.html,这将需要app.js等...你可能需要将你的/模板放在另一个html文件中(让我们称之为home.html),并将/的模板更改为home.html

答案 1 :(得分:0)

我也有同样的问题。然后我试着把脚本&#39;标记为&#39; head&#39;标签。现在工作正常。

<!DOCTYPE html>
<html>
<head>
    <script src="//code.angularjs.org/1.2.20/angular.js"></script>
    <script src="//code.angularjs.org/1.2.20/angular-route.js"></script>
    <script src="static/app.js"></script>
</head>
<body ng-app="phonecatApp" >
    <h1>weclome to test!</h1>
    <div ng-view></div>  
</body>

</html>

答案 2 :(得分:0)

将路由脚本拆分为不同的文件。

angular.module('phonecatApp').config(['$routeProvider','$locationProvider',
  function($routeProvider,$locationProvider)
  {
    $routeProvider.
      when('/', {
        templateUrl: 'index.html',
      }).
      when('/addOrder', {
        templateUrl: 'add-order.html',
        controller: 'AddOrderController'
      }).
      when('/showOrders', {
        templateUrl: 'show-orders.html',
        controller: 'ShowOrdersController'
      }).
      otherwise({
        redirectTo: '/addOrder'
      });
      $locationProvider.html5Mode({
        enabled: true,
        requireBase: false
        });
  }]);

然后在你的索引文件中引用它可能就像:

<script src="static/router.js"></script>

应该修复它。

答案 3 :(得分:0)

我遇到了类似的问题/错误。对我有用的是我使用的路线。即我从app.js

中删除了这部分内容
$locationProvider.html5Mode({
          enabled: true,
          requireBase: false
});