为什么这种 ng 网格分页有效
Why is this ng-grid pagination working
以下是我对以下代码中的 if 条件的理解:
$scope.pagingOptions = {
pageSizes: [250, 500, 1000],
pageSize: 250,
currentPage: 1
};
$scope.$watch('pagingOptions', function (newVal, oldVal) {
if (newVal !== oldVal && newVal.currentPage !== oldVal.currentPage) {
$scope.getPagedDataAsync($scope.pagingOptions.pageSize, $scope.pagingOptions.currentPage, $scope.filterOptions.filterText);
}
}, true);
每当pagingOptions
更改并且 currentPage
属性已更改时,if
条件变为 true,因此将执行 getPagedDataAsync
方法。
但是,即使我不更改currentPage
而是更改 UI 中的pageSize
,网格也会刷新。我不希望发生这种情况(根据我的理解)。那么,为什么网格会刷新呢?
从这里,我获取了代码:
http://angular-ui.github.io/ng-grid/使用服务器端分页示例标题
$watch
末尾的true
表示对范围对象的深度监视pagingOptions
。
因此,如果true
作为可选的第三个参数传入,Angular 将进行深度相等检查。 因此,将检查pageSize
属性是否相等,并且会有所不同。
此处提供了$watch
和第三个参数[objectEquality]
的文档。
提供的代码似乎包含不必要的复杂性。当执行"对象相等监视"(通过将 $watch
的第三个参数设置为 true
)时,将比较对象的属性值而不是对象引用。如果我们假设pageSizes
属性值永远不会更改,则手表会正确通知我们,并且仅通知我们pageSize
值和currentPage
值的更改。所以里面唯一需要的代码是调用页面刷新:
$scope.$watch('pagingOptions', function () {
$scope.getPagedDataAsync($scope.pagingOptions.pageSize, $scope.pagingOptions.currentPage, $scope.filterOptions.filterText);
}, true);
再添加一个手表
$scope.$watch('pagingOptions.pageSize', function (newVal, oldVal) {
if (newVal !== oldVal && newVal.currentPage !== oldVal.currentPage) {
$scope.getPagedDataAsync($scope.pagingOptions.pageSize, $scope.pagingOptions.currentPage, $scope.filterOptions.filterText);
}
}, true);
相关文章:
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 如何通过引用var Using DataTables来进行分页或排序
- 使用CSS或JavaScript计算分页符的数量
- DataTables-创建自定义分页样式(加载更多样式)
- 使用ajax的服务器端分页&jQuery
- 分页:如何用AJAX加载第一个页面
- dataTables-如何自定义分页类型以显示最后一个页码后面的省略号,
- 不带jquery的全屏分页
- 更改组合框分页后,getValue和getRawValue返回相同的值
- jQuery简单分页
- 使用jQuery在表中分页
- jQuery分页下一页和上一页按钮在点击零或超过最后一页后失败
- jQuery:根据select选项中的每页项目进行分页
- 如何为我的分页添加格式
- 用键盘分页jQuery下一个和上一个控件.触发器('点击')不'不起作用
- 如何在emberjs中使用幻影假数据进行分页
- 为什么这种 ng 网格分页有效
- 最有效的使用Jquery分页的方法&历史插件一起
- 此策略中不应执行具有有效分页cookie的CRM 2011查询
- 在不需要大量编码的情况下对JSP应用程序进行分页的最有效解决方案是什么?