我在一个大项目中使用ngTable。表params中发送的getData函数的确切目的是什么?
vm.tableParams = new ngTableParams({
page: 1, // show first page
count: 10 // count per page
}, {
total: data.length, // length of data
getData: function ($defer, params) {
$defer.resolve(data.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});
我想data
是我控制器中的一个对象数组,并且像dataTables那样找不到我的DOM中的数据。
我还看到一个$data
对象造成了混淆。
额外奖励:为什么需要slice()
这些东西?
答案 0 :(得分:3)
getData
方法的目的是检索数据并将其传递给ngTable进行渲染。它应该根据选定的过滤器,排序等来获取/加载应该显示在当前页面上的行(为此使用params
对象)。
当加载数据时,比如ajax请求你应该解决传入getData函数的promise对象和准备好的行数。
在上面的示例中,data
数组是一个局部变量,因此无需发出ajax请求来加载它(这仅用于演示),因此您只需将其传递给promise即可。还会执行额外的切片以模拟分页,就好像它来自已经切片的服务器一样。
通常会使用getData
这样的内容:
getData: function ($defer, params) {
$http.get('/accounts/', {params: {page: params.page()}}).then(function(response) {
$defer.resolve(response.data);
});
}