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