Angular JS 与 Laravel -- 如何绑定 Eloquent ORM 数组以查看

Angular JS with Laravel -- How to Bind Eloquent ORM array To View

我尝试将 Laravel Eloquent ORM 数组绑定到 Angular JS 视图。

这是我的代码,

控制器 (Laravel)

public function index()
{
    $data = User::all();

    Response::json(array('data'=>$data));
}

查看(Laravel)

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Laravel PHP Framework</title>
<script type="text/javascript" href="{{URL::asset('js/angular.js')}}"></script>
<script type="text/javascript"  href="{{URL::asset('js/controller.js')}}"></script>
</head>
<body>
<div class="welcome">
    <ul ng-controller="clientList">
        <li ng-repeat="clients as clients">{{clients.name}}</li>
    </ul>

</div>

控制器(环形 JS)

var anguApp = angular.module('anguApp', []);

anguApp.controller('clientList',function($scope,$http)
{

   $scope.clients=[];

   $http.get('/').success(function (data, status) {
   $scope.clients = data;
   console.log(data);
});
});

现在浏览器出现黑屏.... 如何解决这个问题?

我相当确定您不应该将 User::all(); 的结果包装到一个数组中。 也就是直接pass它的结果就够了:

Response::json($data->toArray());

此外,无论 Laravel 控制器做什么,您都需要 return:

public function index()
{
    $users = User::all();

    return Response::json($users->toArray());
}

更新:

或者,按照 Returning an Eloquent model as JSON in Laravel 4,您还可以 return 模型本身:

public function index()
{
    $users = User::all();

    return $users;
}

更新二:

很确定你的 AngularJS 语法是错误的,根据 docs 是:

<div ng-repeat="(key, value) in myObj"> ... </div>

因此您的代码应为:

<ul ng-controller="clientList">
    <li ng-repeat="client in clients">{{client.name}}</li>
</ul>