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
)呢?