私は AngularJS の socket.io で jQuery DataTables を使用しており、アイテムをソケット メッセージのデータ バインディング リストにプッシュし、その後ダイジェストしています。それが起こったとき、データを更新するだけで正しく機能しないのではなく、データテーブルがそれ自体を再作成しました。エラーもランダムに発生します * Warning: Cannot reinitialise DataTable , and when I do, the datatable failed to display.
JavaScript
var app = angular.module('App', ['ui.bootstrap','ngAnimate', 'datatables']);
app.factory('socket', function () {
var socket = io.connect('http://' + document.domain + ':' + location.port + '/t');
return socket;
});
app.controller('controller', function ($scope, socket, $timeout, DTOptionsBuilder, DTColumnBuilder) {
$scope.data=[];
$scope.headers = {'Name':'name','Title','title'}
socket.on('data', function (d) {
d = angular.fromJson(d);
$scope.data.push(d);
$scope.$digest();
});
$scope.dtOptions = DTOptionsBuilder.newOptions().withPaginationType('full_numbers').withOption('bInfo', false);
$scope.dtColumns = [];
$scope.dtInstance = {};
for (key in $scope.headers) {
$scope.dtColumns.push(DTColumnBuilder.newColumn($scope.headers[key]).withTitle(key));
}
});
HTML
<table id="tbl" datatable="ng" dt-options="dtOptions" dt-columns="dtColumns" dt-instance="dtInstance"
class="table table-striped row-border hover">
<tr class="fade" ng-model="d"
ng-repeat="d in data">