Angular JS 与 Laravel - 如何绑定 Eloquent ORM 数组以查看
Posted
技术标签:
【中文标题】Angular JS 与 Laravel - 如何绑定 Eloquent ORM 数组以查看【英文标题】:Angular JS with Laravel -- How to Bind Eloquent ORM array To View 【发布时间】:2015-07-02 22:07:47 【问题描述】:我尝试将 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>
控制器(Anular 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);
);
);
现在在浏览器中出现空白屏幕.... 如何解决?
【问题讨论】:
把Response::json(array('data'=>$data));
改成这个return Response::json(array('data'=>$data));
,可能有用。
如何用角度显示这个
【参考方案1】:
我相当肯定你不应该将User::all();
的结果包装到一个数组中。
也就是说,直接将它的结果传递就足够了:
Response::json($data->toArray());
此外,您需要返回 Laravel 控制器所做的任何事情:
public function index()
$users = User::all();
return Response::json($users->toArray());
更新:
或者,按照Returning an Eloquent model as JSON in Laravel 4,您也可以返回模型本身:
public function index()
$users = User::all();
return $users;
更新 2:
很确定你的 AngularJS 语法是错误的,根据docs 它是:
<div ng-repeat="(key, value) in myObj"> ... </div>
所以你的代码应该是:
<ul ng-controller="clientList">
<li ng-repeat="client in clients">client.name</li>
</ul>
【讨论】:
Illuminate\Database\Eloquent\Collection 类的对象无法转换为 int 现在获取 json 数组。但是如何用角度显示这个以上是关于Angular JS 与 Laravel - 如何绑定 Eloquent ORM 数组以查看的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Laravel 5.4 与 Angular 4 集成
如何通过单击下一步按钮使用 Angular js 将具有不同数据的同一页面转到 laravel
使用带有 JWT Auth/Laravel 的 Angular JS 获取新的刷新令牌后,如何恢复/重新发送请求?
在自定义验证中使用 Angular JS + Laravel 检查当前密码