我正在使用 .json 文件中的自定义数据并希望对数据进行分页,但所有数据都在单页中; 为什么这样? 下面是我的代码
$http.get('app/user_keys.json').success(function(data) {
vm.data = data;
vm.tableParams = new NgTableParams({ page: 1, count: 2 }, {
total: vm.data.length,
getData: function (params) {
console.log(vm.data.length);
var deferred = $q.defer();
var orderedData = params.sorting() ? $filter('orderBy')(vm.data, params.orderBy()) : vm.data;
deferred.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});
});
<table ng-table="vm.tableParams" class="table table-striped" >
<colgroup>
<col width="5%"/>
<col width="30%"/>
<col width="50%"/>
<col width="15%"/>
</colgroup>
<tr ng-repeat="row in vm.data | filter: searchText track by $index">
<td header="'headerCheckbox.html'">
<input type="checkbox" value="row._id" ng-model="vm.checkboxes.items[row._id]" ></td>
<td data-title="'ID'">{{ row.index }}</td>
<td data-title="'Cloud Location'">{{ row.location }}</td>
<td data-title="'Action'"><i class="fa fa-trash"></i></td>
</tr>
</table>
您确定这与您的源是 JSON 文件这一事实有关吗?
我认为我遇到了同样的问题,尽管我的数据源是一项服务。
该服务返回一个承诺,当它解决时,我设置params.total()
,如返回结果之前的文档中所述,但分页仍然不起作用。
在对组数据进行分页时,我遇到了同样的问题。 所以,我在getGroups函数的末尾添加了这些行。
if (!settings.dataOptions.applyPaging) {
return ngTableDefaultGetData(result, params);
}
return ngTableDefaultGetData.applyPaging(result, params);
使用默认或自定义的分页。
是的,这与我在 #872 中提到的解决方案几乎相同。 我不确定settings.dataOptions.applyPaging
检查是否重要,因为它在上面的某些行中手动设置为 false。
@fsm3xpert , @tandibar ,我应用了@fsm3xpert提出的解决方案并且它有效,但我在控制台中得到以下信息:
Possibly unhandled rejection: {}
有任何想法吗?
好的,我修复了它,这是因为dataOptions
可能是undefined
。 所以代码应该是
if (settings.dataOptions && !settings.dataOptions.applyPaging) {
return ngTableDefaultGetData(result, params);
}
顺便说一句,ng-table 的未来版本将意味着嵌套设置值(EG
dataOptions) 永远不会未定义
2016 年 12 月 21 日星期三晚上 7:19,María Inés Parnisari <
通知@github.com> 写道:
好的,我修复了它,这是因为 dataOptions 可能未定义。 所以代码
应该if (settings.dataOptions && !settings.dataOptions.applyPaging) {
返回 ngTableDefaultGetData(result, params);
}—
您收到此消息是因为您订阅了此线程。
直接回复此邮件,在 GitHub 上查看
https://github.com/esvit/ng-table/issues/893#issuecomment-268614815或静音
线程
https://github.com/notifications/unsubscribe-auth/AA2HPk4I47xMpIlEbXSDSCMUu0mlGn7Vks5rKXu4gaJpZM4Jagxg
.
万一有人像我一样遇到同样的问题,即无论出于何种原因更改库代码都不是一种选择,我找到了一种解决方法:
问题似乎是没有实现分组来处理分页数据。 我最终做的是检索所需页面的数据并将项目总数缓存在变量中。
actualTotal = params.total()
然后我实现了一个响应拦截器,如http://ng-table.com/#/global -customization/demo-response-interceptors 中所述。 在那里我可以将总值设置回缓存值。 这修复了分页的显示。
还有一个问题,即如果用户尝试转到 1 以外的另一个页面,您将看不到任何内容,因为分组使用以下代码对数据数组进行切片:
var pagedData = data.slice((params.page() - 1) * params.count(), params.page() * params.count());
简单的解决方法是在获取数据后在 getData 函数中将页面设置为 1,缓存实际页面并在拦截器中重置。
应用建议的修复程序后,过滤停止为我工作。 为了修复它,在上面的行中,我必须像这样设置dataOptions
:
settings.dataOptions = { applyPaging: false, applyFilter: false };
此修复程序在最新版本中可用吗? 如果不是在哪一行需要添加。
它在上一个版本中不可用。
我得到它的工作修改这部分代码:
if (sortDirection) {
var orderByFn = ngTableDefaultGetData.getOrderByFn();
var orderBy = util_1.convertSortToOrderBy({
value: sortDirection
});
result = orderByFn(result, orderBy);
}
return ngTableDefaultGetData.applyPaging(result, params);
有了这个:
if (sortDirection) {
var orderByFn = ngTableDefaultGetData.getOrderByFn();
var orderBy = util_1.convertSortToOrderBy({
value: sortDirection
});
result = orderByFn(result, orderBy);
}
if (sortDirection) {
var orderByFn = ngTableDefaultGetData.getOrderByFn();
var orderBy = util_1.convertSortToOrderBy({
value: sortDirection
});
结果 = orderByFn(result, orderBy);
}
if (!settings.dataOptions.applyPaging) {
return ngTableDefaultGetData(result, params);
}
return ngTableDefaultGetData.applyPaging(result, params);`
最有用的评论
好的,我修复了它,这是因为
dataOptions
可能是undefined
。 所以代码应该是