使用带有laravel的Angularjs时的无限循环

时间:2014-11-23 12:01:18

标签: angularjs laravel laravel-4 angular-routing

使用ngRoute和laravel时遇到问题。

routes.php文件:

App::missing(function($exception)
{
    return File::get(public_path() . '/angular.html');
});

这是我的angular.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>

这是我的app.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时 - 我的浏览器由于无限循环而挂起 - 它会不断重复相同的文本。我的代码出了什么问题?

1 个答案:

答案 0 :(得分:0)

角度看起来还不错。看起来你正在使用404处理程序(App :: missing())来提供角度。你真的不应该这样做(你现在可以看到原因)。删除该处理程序(或使其成为一个真正的404处理程序),然后只需从控制器内部或路径的闭包中创建一个带有角度的视图和return View::make('angular.html');

正在发生的事情是:您的应用加载并且无法找到正确的路线。应用程序重定向您的方式为404.角度加载并调用./api/posts导致404 ....再次加载角度......