我用ng-table遇到了一些奇怪的行为。当我刷新页面时,reload()方法工作正常,通过套接字事件更新新数据。当我从应用程序的一部分转到下一部分没有完全刷新时,套接字事件调用相同的功能,该功能在刷新后工作但无法重新加载表。
这是表格:
vm.communicationEventLogsTableParams = new ngTableParams({
page: 1, // show first page
count: 5,
sorting: {
createdDate: 'dsc' // initial sorting
}
}, {
counts: [5,10,25,50],
total: vm.communicationEventLogs ? vm.communicationEventLogs.length : 0, // length of data
getData: function ($defer, params) {
//load data from resource
CommunicationEventLog.getCommunicationEventLogs({workorderId: $stateParams.workorderId}, function (data) {
vm.communicationEventLogs = data;
console.log('hi');
console.log('GETTING DATA FOR COMM EVENT LOG TABLE');
var filteredData = vm.communicationEventLogs;
filteredData = $filter('filter')(filteredData, vm.mySearch);
if (filteredData) params.total(filteredData.length);
var orderedData = params.sorting() ?
$filter('orderBy')(filteredData, params.orderBy()) :
filteredData;
if (orderedData)
$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
console.log(params);
});
}
});
这是调用reload的函数,由socket事件调用:
realTimeChannelFactory.on(realTimeChannelFactory.events.CELA, function (args) {
console.log("RT_Event: Communication Log Event!");
vm.communicationEventLogsTableParams.reload();
});
数据在DOM中,因为我可以在触发事件时将其记录到控制台。最奇怪的部分是,如果我过滤表格,ng-table会重新加载,表格中会显示数据。