无法让我的 ui-grid 可扩展以绑定数据
Can't get my ui-grid expandable to bind data
我正在尝试使用 angularjs ui-grid 的可扩展网格。但是我无法使可扩展 ui-grid 中的数据绑定正常工作。一切似乎都很好,我可以展开行并且没有给出错误,但是当我尝试打开一行时那里没有数据。在调试时在控制台中输入 data[i] 时,我得到一个 json 对象,但是在输入 data[i].subGridOptions 时,我得到未定义。我错过了什么?
这是我的代码:
"head"- html
<div class="col-md-12" style="padding-top:10px">
<div ui-grid="log_grid"
ui-grid-pagination
ui-grid-exporter
ui-grid-selection
ui-grid-expandable
ui-grid-pinning
id="log_grid"
style="height:620px;overflow:hidden">
</div>
</div>
</div>
subgrid.html
<div ui-grid="row.entity.subGridOptions" style="height:150px;"></div>
控制器中尝试绑定数据的代码:
var r = logging.get_log(url);
r.promise.then(function () {
$scope.config.logs = r.logs;
var data = $scope.config.logs;
if (data.length == 0) {
$scope.popup("Too bad..", "No result were found.");
}
else {
for (i = 0; i < data.length; i++) {
data[i].subGridOptions = {
columnDefs: [{ name: "Logger", field: "logger" }],
data: data[i].logger
}
}
}
$scope.log_grid.data = $scope.config.logs;
});
}
在控制器中设置网格选项:
$scope.log_grid = {
enableGridMenu: true,
enableColumnResizing: true,
enableRowSelection: true,
multiSelect: false,
enableRowHeaderSelection: false,
paginationPageSizes: 18,
paginationPageSize: 18,
enableHorizontalScrollbar: 0,
expandableRowTemplate: 'static/packages/logging/views/subgrid.html',
expandableRowHeight: 150,
expandableRowScope: {
subGridVariable: 'subGridScopeVariable'
},
onRegisterApi: function (gridApi) {
$scope.gridApi = gridApi;
gridApi.selection.on.rowSelectionChanged($scope, function (row) {
});
},
columnDefs: [
{
displayName: 'Logger',
field: 'logger',
width: '10%',
enableCellEdit: false
},
{
displayName: 'Node',
field: 'node',
width: '10%',
enableCellEdit: false
},
{
displayName: 'TimeStamp',
field: 'timestamp',
width: '15%',
enableCellEdit: false
},
{
displayName: 'Type',
field: 'severity',
width: '15%',
enableCellEdit: false,
},
{
displayName: 'Message',
field: 'msg',
width: '35%',
enableCellEdit: false,
},
{
displayName: 'Source',
field: 'srcfile',
visible: false,
enableCellEdit: false,
},
{
displayName: 'Line',
field: 'lineno',
visible: false,
enableCellEdit: false,
}
],
data: null
};
我现在解决了,我没有意识到你绑定的数据是 json 中的 json 像这样: https://cdn.rawgit.com/angular-ui/ui-grid.info/gh-pages/data/500_complex.json.
我完成的代码现在看起来像这样:
for (i = 0; i < data.length; i++) {
data[i].subGridOptions = {
columnDefs: [{ name: "Column", field: "Column" }],
data: [
{ Column: "Source: " + data[i].srcfile },
{ Column: "Line: " + data[i].lineno }
]
}
}
我正在尝试使用 angularjs ui-grid 的可扩展网格。但是我无法使可扩展 ui-grid 中的数据绑定正常工作。一切似乎都很好,我可以展开行并且没有给出错误,但是当我尝试打开一行时那里没有数据。在调试时在控制台中输入 data[i] 时,我得到一个 json 对象,但是在输入 data[i].subGridOptions 时,我得到未定义。我错过了什么?
这是我的代码:
"head"- html
<div class="col-md-12" style="padding-top:10px">
<div ui-grid="log_grid"
ui-grid-pagination
ui-grid-exporter
ui-grid-selection
ui-grid-expandable
ui-grid-pinning
id="log_grid"
style="height:620px;overflow:hidden">
</div>
</div>
</div>
subgrid.html
<div ui-grid="row.entity.subGridOptions" style="height:150px;"></div>
控制器中尝试绑定数据的代码:
var r = logging.get_log(url);
r.promise.then(function () {
$scope.config.logs = r.logs;
var data = $scope.config.logs;
if (data.length == 0) {
$scope.popup("Too bad..", "No result were found.");
}
else {
for (i = 0; i < data.length; i++) {
data[i].subGridOptions = {
columnDefs: [{ name: "Logger", field: "logger" }],
data: data[i].logger
}
}
}
$scope.log_grid.data = $scope.config.logs;
});
}
在控制器中设置网格选项:
$scope.log_grid = {
enableGridMenu: true,
enableColumnResizing: true,
enableRowSelection: true,
multiSelect: false,
enableRowHeaderSelection: false,
paginationPageSizes: 18,
paginationPageSize: 18,
enableHorizontalScrollbar: 0,
expandableRowTemplate: 'static/packages/logging/views/subgrid.html',
expandableRowHeight: 150,
expandableRowScope: {
subGridVariable: 'subGridScopeVariable'
},
onRegisterApi: function (gridApi) {
$scope.gridApi = gridApi;
gridApi.selection.on.rowSelectionChanged($scope, function (row) {
});
},
columnDefs: [
{
displayName: 'Logger',
field: 'logger',
width: '10%',
enableCellEdit: false
},
{
displayName: 'Node',
field: 'node',
width: '10%',
enableCellEdit: false
},
{
displayName: 'TimeStamp',
field: 'timestamp',
width: '15%',
enableCellEdit: false
},
{
displayName: 'Type',
field: 'severity',
width: '15%',
enableCellEdit: false,
},
{
displayName: 'Message',
field: 'msg',
width: '35%',
enableCellEdit: false,
},
{
displayName: 'Source',
field: 'srcfile',
visible: false,
enableCellEdit: false,
},
{
displayName: 'Line',
field: 'lineno',
visible: false,
enableCellEdit: false,
}
],
data: null
};
我现在解决了,我没有意识到你绑定的数据是 json 中的 json 像这样: https://cdn.rawgit.com/angular-ui/ui-grid.info/gh-pages/data/500_complex.json.
我完成的代码现在看起来像这样:
for (i = 0; i < data.length; i++) {
data[i].subGridOptions = {
columnDefs: [{ name: "Column", field: "Column" }],
data: [
{ Column: "Source: " + data[i].srcfile },
{ Column: "Line: " + data[i].lineno }
]
}
}