ngTable中getData()函数的确切目的是什么

时间:2015-07-24 08:39:32

标签: angularjs ngtable

我在一个大项目中使用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()这些东西?

1 个答案:

答案 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);
    });
}