[英]Angular Grid (ag-grid) show/hide not working
我正在使用Angular Grid(ag-grid)显示数据。 在我的gridOptions中,当单击其中一列时,我使用cellClicked
来调用一个函数。 该功能, SeeDetails
只需将范围内的变量设置为true或false即可隐藏/显示包含ag-grid
的div。 由于某种原因,它不起作用。
为了进行测试,我在ag-grid
外部创建了一个按钮,该按钮调用了相同的SeeDetails
函数。 以这种方式执行操作时,div将网格隐藏得很好(在我的html中,我有ng-show="vm.ShowDetails == 'false'"
以显示隐藏网格)。
我认为这与范围有关,只是不确定。 有任何想法吗?
HTML:
<div ng-show="vm.ShowDetails == 'false'">
<div style="height: 800px" ag-grid="vm.gridOptions" class="ag-fresh"></div>
</div>
视图模型:
var vm = this;
vm.ShowDetails = 'false';
vm.gridOptions = {
rowData: null,
enableColResize: true,
enableSorting: true,
enableFilter: true,
columnDefs: [
{
field: 'LogID',
headerName: 'Log ID a',
width: 100
}, {
headerName: 'Log ID',
name: 'Log ID',
cellClicked: function (params) {
vm.SeeDetails(params.data.LogID);
},
cellRenderer: function (params) {
return '<a>' + params.data.LogID + '</a>';
}
}, {
headerName: 'Date Of Error',
name: 'Col Name',
cellRenderer: function (params) {
return moment(params.data.TimeOfError).format('DD/MMM/YYYY')
//return params.data.TimeOfError;
}
}
]
};
vm.SeeDetails = function SeeDetails(LogID) {
if (vm.ShowDetails == 'false') {
vm.ShowDetails = 'true';
} else {
vm.ShowDetails = 'false';
}
}
在此特定回调中,ag-grid不会调用摘要循环。
要解决此问题,只需确保摘要周期已开始。
为此,请执行以下操作:
vm.SeeDetails = function SeeDetails(LogID) {
if (vm.ShowDetails == 'false') {
vm.ShowDetails = 'true';
} else {
vm.ShowDetails = 'false';
}
setTimeout( function() { $scope.$apply(); }, 0 );
}
超时是作为保护措施完成的,以确保摘要循环尚未运行。 需要调用本机超时而不是使用角度超时服务,因为角度之一将保证摘要正在运行(您不希望这样做)。
$timeout(function() {
$scope.gridOptions.api.checkGridSize()
});
为我工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.