如何访问网格的过滤大小?
How do I access the filtered size of the grid?
我正在使用 ng 网格。我正在使用过滤器。我有那么多功能正常。现在我想知道(以编程方式)网格中还有多少项目。
我深入研究了 github 上的源代码,发现该值存储为:
grid.renderContainers.body.visibleRowCache.length;
但我一直无法弄清楚如何访问该变量,特别是来自网格本身之外的 JS 的 grid
对象。
其他 SO 答案包含如下代码:
angular.element($("#gridDiv")).scope()
虽然该代码有效,但它访问的是范围(我已经可以在 JS 中访问),而不是网格内使用的数据。有没有办法访问网格内的 javascript 个对象?
在 gridOptions
中环顾四周,我发现了一个名为 filteredRows
的对象。
所以你可以这样得到你想要的长度:
$scope.gridOptions.ngGrid.filteredRows.length
请查看下面或此处更新后的演示 plunkr。
(onRegisterApi
只是一个测试,不需要。)
// main.js
var app = angular.module('myApp', ['ngGrid']);
app.controller('MyCtrl', function($scope) {
$scope.myData = [{name: "Moroni", age: 50},
{name: "Tiancum", age: 43},
{name: "Jacob", age: 27},
{name: "Nephi", age: 29},
{name: "Enos", age: 34}];
$scope.filter = {filterText:''};
$scope.gridOptions = {
data: 'myData',
enableFiltering: true,
filterOptions: $scope.filter,
showFilter: true,
onRegisterApi: function( gridApi ) {
$scope.gridApi = gridApi;
$scope.gridApi.core.on.filterChanged( $scope, function() {
console.log($scope.gridApi);
});
}
};
$scope.showRowCount = function() {
console.log($scope.gridOptions.ngGrid.filteredRows.length);
}
});
.gridStyle {
border: 1px solid rgb(212,212,212);
width: 400px;
height: 300px
}
<link href="http://angular-ui.github.com/ng-grid/css/ng-grid.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="http://angular-ui.github.com/ng-grid/lib/ng-grid.debug.js"></script>
<div ng-app="myApp" ng-controller="MyCtrl">
<input ng-model="filter.filterText"/>
<button ng-click="showRowCount()">How many rows have been filtered</button>
<div class="gridStyle" ng-grid="gridOptions"></div>
currently visible items: {{gridOptions.ngGrid.filteredRows.length}}
</div>
我正在使用 ng 网格。我正在使用过滤器。我有那么多功能正常。现在我想知道(以编程方式)网格中还有多少项目。
我深入研究了 github 上的源代码,发现该值存储为:
grid.renderContainers.body.visibleRowCache.length;
但我一直无法弄清楚如何访问该变量,特别是来自网格本身之外的 JS 的 grid
对象。
其他 SO 答案包含如下代码:
angular.element($("#gridDiv")).scope()
虽然该代码有效,但它访问的是范围(我已经可以在 JS 中访问),而不是网格内使用的数据。有没有办法访问网格内的 javascript 个对象?
在 gridOptions
中环顾四周,我发现了一个名为 filteredRows
的对象。
所以你可以这样得到你想要的长度:
$scope.gridOptions.ngGrid.filteredRows.length
请查看下面或此处更新后的演示 plunkr。
(onRegisterApi
只是一个测试,不需要。)
// main.js
var app = angular.module('myApp', ['ngGrid']);
app.controller('MyCtrl', function($scope) {
$scope.myData = [{name: "Moroni", age: 50},
{name: "Tiancum", age: 43},
{name: "Jacob", age: 27},
{name: "Nephi", age: 29},
{name: "Enos", age: 34}];
$scope.filter = {filterText:''};
$scope.gridOptions = {
data: 'myData',
enableFiltering: true,
filterOptions: $scope.filter,
showFilter: true,
onRegisterApi: function( gridApi ) {
$scope.gridApi = gridApi;
$scope.gridApi.core.on.filterChanged( $scope, function() {
console.log($scope.gridApi);
});
}
};
$scope.showRowCount = function() {
console.log($scope.gridOptions.ngGrid.filteredRows.length);
}
});
.gridStyle {
border: 1px solid rgb(212,212,212);
width: 400px;
height: 300px
}
<link href="http://angular-ui.github.com/ng-grid/css/ng-grid.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="http://angular-ui.github.com/ng-grid/lib/ng-grid.debug.js"></script>
<div ng-app="myApp" ng-controller="MyCtrl">
<input ng-model="filter.filterText"/>
<button ng-click="showRowCount()">How many rows have been filtered</button>
<div class="gridStyle" ng-grid="gridOptions"></div>
currently visible items: {{gridOptions.ngGrid.filteredRows.length}}
</div>