我将ngRoute与laravel一起使用时遇到问题。
路线.php:
App::missing(function($exception)
{
return File::get(public_path() . '/angular.html');
});
这是我的角度.html(这是我使用ng-view
的地方):
<!doctype html>
<html lang="ru" ng-app="app">
<head>
<meta charset="UTF-8">
<title>Angular & Laravel</title>
<link rel="stylesheet" href="libs/bootstrap/dist/css/bootstrap.min.css"/>
</head>
<body>
<header>
<ul class="nav navbar-nav">
<li><a href="/">Home</a></li>
<li><a href="/posts">Posts</a></li>
</ul>
</header>
<div class="container">
<h2>Angular, hello!</h2>
<div ng-view></div>
</div>
<script type="text/javascript" src="libs/angular/angular.min.js"></script>
<script type="text/javascript" src="libs/angular-route/angular-route.min.js"></script>
<script type="text/javascript" src="js/app.js"></script>
</body>
</html>
这是我的应用程序.js:
// define app
var app = angular.module('app', ['ngRoute']);
// routes
app.config(function($routeProvider) {
$routeProvider.when('/', {
templateUrl: 'views/home.html',
controller: 'HomeCtrl'
}).when('/posts', {
templateUrl: 'views/posts.html',
controller: 'firstCtrl'
}).otherwise({
redirectTo: '/'
});
});
// controllers
app.controller('HomeCtrl', function($scope)
{
$scope.name = 'Ebosher';
});
app.controller('firstCtrl', function($scope, $http)
{
$http.get('/api/posts').then(function(result) {
$scope.posts = result.data;
});
});
现在,当我访问http//project.local时 - 我的浏览器由于无限循环而挂起 - 它不断重复相同的文本无数次。我的代码有什么问题?
角度看起来不错。看起来您正在使用 404 处理程序 (App::missing()) 来提供您的角度。你真的真的不应该这样做(你现在可以看到为什么)。删除该处理程序(或使其成为实际的 404 处理程序),然后只需创建一个包含角度的视图,并从控制器内部或路由闭包return View::make('angular.html');
。
正在发生的事情是这样的:您的应用程序加载并且找不到正确的路由。应用程序以 404 的方式重定向您。角度加载并调用 ./api/posts,导致 404...。哪个加载角度再次...