2015-11-01 135 views
4

我正在从Django的这个JSON和我想的角度UI的表格显示这一点,但我得到的错误:如何显示从JSON来UI网格数据角度UI网

Error: colDef.name or colDef.field property is required 
[email protected]://127.0.0.1:8000/static/buddy/js/ui-grid.js:3771:1 
buildColumns/<@http://127.0.0.1:8000/static/buddy/js/ui-grid.js:3630:7 
[email protected]://127.0.0.1:8000/static/buddy/js/ui-grid.js:3629:5 
[email protected]://127.0.0.1:8000/static/buddy/js/ui-grid.js:2749:27 
[email protected]://127.0.0.1:8000/static/buddy/js/angular.js:15693:13 
$RootScopeProvider/this.$get</[email protected]://127.0.0.1:8000/static/buddy/js/angular.js:15826:23 
$RootScopeProvider/this.$get</[email protected]://127.0.0.1:8000/static/buddy/js/angular.js:16097:13 
[email protected]://127.0.0.1:8000/static/buddy/js/angular.js:10546:36 
[email protected]://127.0.0.1:8000/static/buddy/js/angular.js:10744:7 
[email protected]://127.0.0.1:8000/static/buddy/js/angular.js:10685:1 

我要只显示来自“域”

的JSON是属性:

[{"fields": {"joiningtime": null, "boozprofileId": 1, "userId": 1, "likeStatus": true}, "model": "buddy.guestentry", "pk": 1}, {"fields": {"joiningtime": null, "boozprofileId": 1, "userId": 1, "likeStatus": true}, "model": "buddy.guestentry", "pk": 2}, {"fields": {"joiningtime": "2015-10-18T15:53:58.243Z", "boozprofileId": 12, "userId": 3, "likeStatus": true}, "model": "buddy.guestentry", "pk": 3}, {"fields": {"joiningtime": "2015-10-18T15:54:24.055Z", "boozprofileId": 8, "userId": 3, "likeStatus": true}, "model": "buddy.guestentry", "pk": 4}, {"fields": {"joiningtime": null, "boozprofileId": 3, "userId": 1, "likeStatus": true}, "model": "buddy.guestentry", "pk": 5}, {"fields": {"joiningtime": null, "boozprofileId": 3, "userId": 1, "likeStatus": true}, "model": "buddy.guestentry", "pk": 6}, {"fields": {"joiningtime": null, "boozprofileId": 3, "userId": 1, "likeStatus": true}, "model": "buddy.guestentry", "pk": 7}, {"fields": {"joiningtime": null, "boozprofileId": 3, "userId": 1, "likeStatus": true}, "model": "buddy.guestentry", "pk": 8}] 

回答

1

您收到的错误表明您没有定义列定义的UI电网,或者不能让他们正确定义。简单地指嵌套fields属性为fields.<attributeName>

//the JSON from above 
$scope.gridOptions.data = [{"fields": {"joiningtime": null, "boozprofileId": ....}]; 

$scope.gridOptions.columnDefs = [ 
    {name: 'fields.joiningtime' }, 
    {name: 'fields.boozprofileId' }, 
    {name: 'fields.userId' }, 
    {name: 'fields.likeStatus' } 
]; 

演示 - >http://plnkr.co/edit/KXvES4G64RVwneFbZzV2?p=preview


记住要瞄准正确的控制器。你有两个IndexCtrlajax

<div ng-controller="ajax"> 
    <div ui-grid="gridOptions" ui-grid-cellNav class="grid"></div> 
</div> 
+0

现在我得到错误intialize它:需要colDef.name或colDef.field财产 – focode

+0

@focode - 你这样做之前, - “_colDef.name或colDef.field属性是必需的” - 如果你显示你的代码,它会容易得多,也许你对标记有问题。你是否从plnkr复制了这个计划?它应该马上工作,就像'$ http'一样。 – davidkonrad

+0

我不能在这里复制过去,这里是它的github链接...控制器名称是ajax:https://github.com/focode/buddy2/blob/master/src/static/buddy/js/ main.js – focode

1

万一大卫的回答并没有帮助你:

尝试从后JSON received地方卸下

$scope.gridOptions.data = [{"fields": {"joiningtime": null, "boozprofileId": ....}]; 

$scope.gridOptions.columnDefs = [ 
    {name: 'fields.joiningtime' }, 
    {name: 'fields.boozprofileId' }, 
    {name: 'fields.userId' }, 
    {name: 'fields.likeStatus' } 
]; 

,并把它放在控制器的起点功能。

我的意思是,在一开始,然后只更新data当您收到JSON response

$scope.gridOptions.data = response.data