Angularjs 如何在不调用getData的情况下更改ngTable中的数据?

Angularjs 如何在不调用getData的情况下更改ngTable中的数据?,angularjs,api,ngtable,Angularjs,Api,Ngtable,我需要使用ngTable动态更改数据,而无需向服务API请求数据 假设我在控制器中路由时有此呼叫: vm.tableParams = new NgTableParams({ count: 5 }, { counts: counts, sorting: { name: 'asc' }, getData: function(params) { return ApiService.query({ limit

我需要使用
ngTable
动态更改数据,而无需向服务API请求数据

假设我在控制器中路由时有此呼叫:

vm.tableParams = new NgTableParams({
    count: 5
}, {
    counts: counts,
    sorting: {
        name: 'asc'
    },
    getData: function(params) {
        return ApiService.query({
            limit: params.count(),
            offset: (params.page() - 1) * params.count(),
            sort: params.orderBy()
        }).$promise.then(function(response) {
            params.total(response.totals);
            return response.items;
        });
    }
});
有了这个
ngTable
就可以完美地创建具有正确分页的表,并且一切正常,我可以导航页面、更改页面大小、排序、ecc

现在假设每5秒有一条广播消息到达,给我一个对象,其中包含表中某一行的数据,我想更改该行,并且只更改包含新数据的行。

如果我执行下面的
ngTable
调用
getData()
并刷新整个行表

这在我看来似乎不合逻辑,因为如果我通过
dataset
传递数据,你不应该再次调用
getData
,你不这样认为吗

还是我遗漏了什么

$scope.$on('broacastMessage', function(event, data) {
    vm.update = false;
    if (vm.tableParams && vm.tableParams.data) {
        // Check if the new data is in the rows table and remap it
        var newdata = _.map(vm.tableParams.data, function(item) {
            if (data._id && data._id === item._id) {
                item = data;
                vm.update = true;
            }
            return item;
        });

        // Assign new data to the table
        if (vm.update) {
            // Here this method calls getData()
            vm.tableParams.settings({
                dataset: newdata
            });
        }
    }
});

或者我可以用另一种方式传递新行吗?

我不熟悉
ngTable
,但是您在每个新消息上用全新数组(即
newdata
)替换
dataset
的代码是一个引用重新分配,它可能是通过设计触发
getData()
。相反,您为什么不直接更新现有的
数据集
数组引用(即
vm.tableParams.data.settings().dataset
)?我不熟悉
ngTable
,但在每个新消息上用全新数组(即
newdata
)替换
数据集的代码是一个引用重新分配,这可能是设计触发的
getData()
。相反,为什么不直接更新现有的
数据集
数组引用(即
vm.tableParams.data.settings().dataset
)呢?