Angularjs 带行处理器过滤的ui网格无限滚动

Angularjs 带行处理器过滤的ui网格无限滚动,angularjs,infinite-scroll,angular-ui-grid,Angularjs,Infinite Scroll,Angular Ui Grid,我有一个angularjs应用程序,使用ui.grid和无限滚动模块。我使用的是整行过滤,如下所述: 其思想是过滤掉具有属于特定集合的Id的行;它按设计工作。我的问题是,当我获得第一页数据时,过滤器行处理器从可视性中删除了足够多的行,以至于我的滚动条消失。这进而导致无限滚动api从不引发“needLoadMoreData”事件 这是一个未知的领域,还是有办法解决这个问题?如果换一种方式更容易,我也愿意不使用这种机制进行过滤 更新(2016年8月1日) 我找到了一份我不太喜欢的工作。本质上,我有一

我有一个angularjs应用程序,使用ui.grid和无限滚动模块。我使用的是整行过滤,如下所述:

其思想是过滤掉具有属于特定集合的Id的行;它按设计工作。我的问题是,当我获得第一页数据时,过滤器行处理器从可视性中删除了足够多的行,以至于我的滚动条消失。这进而导致无限滚动api从不引发“needLoadMoreData”事件

这是一个未知的领域,还是有办法解决这个问题?如果换一种方式更容易,我也愿意不使用这种机制进行过滤

更新(2016年8月1日)

我找到了一份我不太喜欢的工作。本质上,我有一个已知的页面大小,如果进入网格的数据小于该页面大小,并且我的回调返回false表示“查询结束”,我会自动发出下一个页面查询。我更愿意通过GridAPI找到解决方案,但目前这将起作用

if(this.itemsSource.data.length < constants.PAGE_SIZE && !continuation.endOfQuery){
    //call get data again
}
if(this.itemsSource.data.length
经过一段时间的思考,我决定使用下面的方法作为解决方案。如果换一种方式更有意义的话,我仍然愿意接受建议。我决定计算与网格视口相比的总可见行的高度,而不是依赖于数据的长度(这只是粗略地转换为有一个滚动条)

//this method get called from the callback from needsMoreData
//hasMoreData is the same boolean flag sent in to dataLoaded
var shouldRetrieveMore = function (gridApi, hasMoreData){
    if (!hasMoreData) {
        return false;
    }

    var totalCountOfRows = gridApi.grid.getVisibleRowCount();
    if (totalCountOfRows === 0) {
        return true;
    }

    var height = gridApi.grid.getViewportHeight();
    var heightOfRow = gridApi.grid.getVisibleRows()[0].$$height;

    return ((heightOfRow * totalCountOfRows) <= height);
}
//从needsMoreData的回调调用此方法
//hasMoreData是发送到dataLoaded的相同布尔标志
var shouldRetrieveMore=函数(gridApi、hasMoreData){
如果(!hasMoreData){
返回false;
}
var totalCountOfRows=gridApi.grid.getVisibleRowCount();
如果(totalCountOfRows==0){
返回true;
}
var height=gridApi.grid.getViewportHeight();
var heightOfRow=gridApi.grid.getVisibleRows()[0]。$$height;

return((heightOfRow*totalCountOfRows)在考虑了一段时间后,我决定使用下面的方法作为我的解决方案。如果换一种方法更有意义,我仍然愿意接受建议。而不是依赖于数据长度(这只是粗略地转换为有一个滚动条)我决定计算与栅格视口相比的总可见行的高度

//this method get called from the callback from needsMoreData
//hasMoreData is the same boolean flag sent in to dataLoaded
var shouldRetrieveMore = function (gridApi, hasMoreData){
    if (!hasMoreData) {
        return false;
    }

    var totalCountOfRows = gridApi.grid.getVisibleRowCount();
    if (totalCountOfRows === 0) {
        return true;
    }

    var height = gridApi.grid.getViewportHeight();
    var heightOfRow = gridApi.grid.getVisibleRows()[0].$$height;

    return ((heightOfRow * totalCountOfRows) <= height);
}
//从needsMoreData的回调调用此方法
//hasMoreData是发送到dataLoaded的相同布尔标志
var shouldRetrieveMore=函数(gridApi、hasMoreData){
如果(!hasMoreData){
返回false;
}
var totalCountOfRows=gridApi.grid.getVisibleRowCount();
如果(totalCountOfRows==0){
返回true;
}
var height=gridApi.grid.getViewportHeight();
var heightOfRow=gridApi.grid.getVisibleRows()[0]。$$height;
返回值((高度of row*总数of rows)