[英]How can I display a grid repeater using ui-grid?
我有包括{id,message,date}
在内的消息数据。 我想使用ui-grid在AngularJs中使用data{message}
为每个日期显示一个网格
我在想这样的事情:
<div ng-repeat="(item in data | groupBy: 'Date'"> <div>{{ item.Date }}</div> <div id="grid1" ui-grid="gridOptions(item.Date) " class="grid"></div> </div>
但它不起作用!
$scope.gridOptions = function (date) {
return {
enableSorting: true,
enableFiltering: true,
data: 'data',
columnDefs: $scope.filterGrid(date),
onRegisterApi: function (gridApi) {
$scope.gridApi = gridApi;
},
};
};
$scope.filterGrid= function (date){
return [
{ field: 'id', enableFiltering: False},
{
field: 'Date', enableFiltering: false, filter: {
noTerm: true,
condition: function (searchTerm, cellValue) {
return cellValue.match(date);
}
}
},
{ field: 'Message' , enableFiltering: false },
]
}
ui-grid
属性接收一个包含几个参数的gridOptions
对象。 其中两个是:
columnDefs
定义列及其数据绑定。 data
-您情况下的消息对象。 查看文档以进行进一步研究: http : //ui-grid.info/docs/#/tutorial
代码示例
模板:
<div ng-repeat='item in items track by item.id' ui-grid='getItemGridOptions($index)'></div>
将项目索引传递给控制器使您可以处理数据。 然后,您可以返回一个包含data
和columnDefs
属性的对象。 像这样:
private getItemGridOptions(index): IGridOptions {
//get the data you need for your items array using the index...
// then return the gridOptions object (I put random values)
return {
columnDefs: this.columns,
rowHeight: 24,
rowTemplate: rowtpl,
enableHorizontalScrollbar: this.uiGridConstants.scrollbars.NEVER,
enableColumnMenus: false,
enableRowSelection: true,
enableRowHeaderSelection: false,
enableFiltering: true,
modifierKeysToMultiSelect: true,
multiSelect: true,
data: null,
};
}
首先-ui-grid具有分组功能 ,但这仍处于beta中。
您可以尝试使用此示例将数据分组并相应地构建网格。
var dataSource = {};
$scope.gridOptions = {};
var generalGridOptions = {
enableSorting: true,
columnDefs: [
{ name: 'prop1' },
{ name: 'prop2' },
],
data: null
};
// group the data
for(var i = 0; i < data.length; i++){
if(!dataSource[data[i].month]){
dataSource[data[i].month] = [];
}
var obj = {};
for(var prop in data[i]){
if(prop!='month'){
obj[prop] = data[i][prop];
}
}
dataSource[data[i].month].push(obj);
}
// build the grid options
for (var item in dataSource) {
$scope.gridOptions[item] = angular.copy(generalGridOptions);
$scope.gridOptions[item].data = dataSource[item];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.