1

私は 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">
4

1 に答える 1