我正在开发一个项目,用Laravel设置后端RESTful API,用angularJS设置Front-end。我刚从controller@index像这样的简单all()->toArray()
:
A。
return Response::json([
'val' => myModel::all()->toArray()
]);
然后,有了这个有角度的物体,我可以做$scope.myArray=response.val
之类的事情,最终也可以做$scope.myArrayBoundToATable.push(newelement)
之类的动作。如果通过id
对JSON进行键控,则生成的JSON会更好,因此我将其更改为:
B。
return Response::json([
'res' => myModel::all()->keyBy('id')->toArray()
]);
但现在所有像.splice
和.push
这样的函数都抛出了一个错误。通过登录控制台,我可以看到:有了all()->toArray()
:[Object]
,一切都很好。带有keyBy('id')->toArray()
:Object {1: Object}
我必须将$scope.myVar
上的CRUD操作重写为JS对象,而不是数组。
我可以使用方法A.并迭代每个元素来搜索ID,但方法B.允许我以更优雅的方式访问元素:$scope.myVar(ID)
。
正如@lukasgieter所指出的,这是一个关联数组。为了便于前端消耗,只需使用array_values
将关联阵列转换为常规阵列即可
以下是我的处理方法。
Response::json(['val' => array_values(myModel::all())]);