如果数据是嵌套的 JSON 数组,有人可以指导访问绑定值的正确语法。这是用例http://plnkr.co/edit/tizLxnAtgqDnptiEb3mg?p=preview的 plunker
基本上,正如您在此处看到的,地址是不同地址的集合,我需要一种方法来过滤它,类似于我已经在上面尝试过的 Angular JS 过滤器表达式并且它正在工作。但是是否有一些特定于 UI Grid 的表达式,例如 MainAttribute[childAttribute='XYZ'].value 或类似的东西。
问题是我能够使用 AngularJS 表达式从数组中检索过滤后的子属性,但在后端它仍然是一个数组并导致问题,例如从前端无法过滤该列,并且当您导出到 CSV 时,它会给出完整的 JSON该列的数组。
应用程序.js
var app = angular.module('app', ['ngTouch', 'ui.grid', 'ui.grid.edit']);
app.controller('MainCtrl', ['$scope', function ($scope) {
var statusTemplate = "<div>{{(address | filter:{street:'303 Dove Ave'})[0].city}}</div>";
$scope.gridOptions = {
enableSorting: true,
columnDefs: [{
name: 'firstName',
field: 'first-name'
}, {
name: '1stFriend',
field: 'friends[0]'
}, {
name: 'city',
cellTemplate: statusTemplate
}, {
name: 'getZip',
field: 'getZip()',
enableCellEdit: false
}],
data : [{
"first-name": "Cox",
"friends": [
"friend0"
],
"address": [{
street: "301 Dove Ave",
city: "Nairobi",
zip: "39565"
}, {
street: "302 Dove Ave",
city: "Delhi",
zip: "39565"
}, {
street: "303 Dove Ave",
city: "Patna",
zip: "39565"
}, {
street: "304 Dove Ave",
city: "Jamshedpur",
zip: "39565"
}, {
street: "305 Dove Ave",
city: "Bangalore",
zip: "39565"
}],
"getZip": function() {
return this.address.zip;
}
}]
};
}]);
索引.html
<html ng-app="app">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular-touch.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular-animate.js"></script>
<script src="http://ui-grid.info/docs/grunt-scripts/csv.js"></script>
<script src="http://ui-grid.info/docs/grunt-scripts/pdfmake.js"></script>
<script src="http://ui-grid.info/docs/grunt-scripts/vfs_fonts.js"></script>
<script src="http://ui-grid.info/release/ui-grid-unstable.js"></script>
<link rel="stylesheet" href="http://ui-grid.info/release/ui-grid-unstable.css" type="text/css">
<link rel="stylesheet" href="main.css" type="text/css">
</head>
<body>
<div ng-controller="MainCtrl">
<div ui-grid="gridOptions" class="grid"></div>
</div>
<script src="app.js"></script>
</body>
</html>