使用外部过滤器

时间:2016-11-22 12:33:10

标签: angularjs angular-ui-grid

我在我的项目中使用UI网格v3.0.0。最近我改变了我的代码,使用下拉列表值过滤网格。在此更改之后,当我多次过滤网格时,UI网格变为空白。这是间歇性问题,我没有收到任何javascript错误。当UI网格在应用过滤器后变为空白时,UI网格将保持空白,直到用户移动UI网格的滚动条。

我正在使用以下网格选项。

	    $scope.options = {
	    		enableColumnMenus: false,
				enableSelectAll: true,
	    		enableFiltering: true,
	    		enableHorizontalScrollbar:0, 
				enableRowHeaderSelection: false,
	    		enableRowSelection: true,
	    		data :  [], 
				showSelectionCheckbox: true,
				selectionRowHeaderWidth: 25,
				rowHeight: 25,
				columnDefs : $scope.columnDefs
	   };
	    
	    $scope.options.onRegisterApi = function (gridApi) {
	    	$scope.options = gridApi;
	    	gridApi.selection.on.rowSelectionChanged($rootScope , function(gridApi) {
	    		$scope.options.selected = gridApi;
			});

我在调用ui网格数组后也会在grid api下面调用以进行刷新。

	   $scope.options.core.refresh();

但它仍然没有用。如果有人能给我一些关于如何解决这个问题的提示,我将非常感激。感谢。

3 个答案:

答案 0 :(得分:0)

我从来没有能够让core.refresh为我工作。我实际上使用了一种解决方法。您可以尝试查看它是否有助于解决此问题。

创建功能:

 $scope.refresh = false;

  function refresh () {
    $scope.refresh = true;
    $timeout(function () {
        $scope.refresh = false;
    }, 0);
};

在您的网格div上添加ng-if

                <div ng-if="!refresh" ui-grid="gridOptions" class="grid"></div>

然后在控制器中调用refresh(),在此处/何时要刷新网格。

我希望这有帮助!

答案 1 :(得分:0)

您需要在刷新后设置滚动位置,如下所示:

$scope.options.core.refresh();    
$scope.options.core.scrollTo($scope.data[0], $scope.columnDefs[0]);

答案 2 :(得分:-1)

您可以使用$ filter of angular来过滤您的剑道网格dataSource。

您可以从以下代码中获取参考,让我知道您需要的任何其他内容。

 var ds = $filter('filter')($scope.grdDataSource.dataSource.data, $scope.searchText);
 $scope.kendoGridOptions.dataSource.data = ds;