2017-09-04 74 views
0

嘗試複製簡單路由示例w3schools,但在訪問index.html時,它在控制檯中始終與「RangeError:Maximum call stack size exceeded」一起崩潰。ng-view導致頁面崩潰

我試圖添加/刪除部分代碼來隔離問題,並且崩潰似乎發生在<div ng-view></div>。這是爲什麼?我從原來的例子中做出的改變並不那麼激烈。

下面是代碼

的index.html

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular-route.js"></script> 
<script src="app.js"></script> 

</head> 

<body ng-app="myApp"> 

<a href="#!red">Red</a> 
<a href="#!green">Green</a> 

<div ng-view></div> 

</body> 
</html> 

app.js

var app = angular.module("myApp", ["ngRoute"]); 
app.config(function($routeProvider) { 
    $routeProvider 
    .when("/", { 
     templateUrl : "index.html" 
    }) 
    .when("/red", { 
     templateUrl : "red.html" 
    }) 
    .when("/green", { 
     templateUrl : "green.html" 
    }); 
}); 

red.html

This is red 

green.html

This is green 

回答

2

是的,指數爲其它視圖的容器。您應該放置一個局部視圖而不是索引。問題就在這裏:

$routeProvider 
    .when("/", { 
     templateUrl : "index.html" 
    }) 

該模板的URL將加載完整的index.html裏面NG-視圖,這將載入另一index.html的一個新的NG-欣賞到無限的Secula Seculorum。

最簡單的解決辦法:創建一個新的視圖(如您有其他途徑),並把它放在templateUrl

1

你是循環使用此語句的應用程序。

$routeProvider 
.when("/", { 
    templateUrl : "index.html" 
}) 

您應該另一個單獨的模板,它代表作爲你的主模板不index.html