2016-04-01 31 views
1

現在、Datatables(https://datatables.net)を使用してテーブルを作成しています。NodejsでDatableを使用するsocket.io

表のデータは、サーバーからsocket.ioを通じて取得されます。

私の問題は、socket.ioがデータを追加したときに、テーブルが「更新」されていないと、エントリが1つしかないと表示され、検索ボックスが最後に追加された要素に対してのみ機能しているということです。ここで

は、私のコードのサンプルです:

socket.on('jobStepsResponse', function(message) { 
      document.getElementById('listOfJobs').style.display = 'none'; 
      document.getElementById('contentJob').style.display = 'block'; 
      document.getElementById('jobid').innerHTML = "<button onClick=returnToJobList()>Retour</button> Job "+message.idJob; 
      for(var i=0;i<Object.keys(message.status).length;i++){ 
       document.getElementById('tabstats').innerHTML += '<tr><td>'+Object.keys(message.status)[i]+'</td>'+'<td>'+ts2time(message.status[Object.keys(message.status)[i]])+'</td>'+'</tr>'; 
      } 
      $(document).ready(function() {$('#example2').DataTable();}); 
      setInterval(function() { $('#example2').DataTable().ajax.reload(null, false); }, 1000); 
     }); 

あなたが見ることができるように、私はAjaxのリロードを使用してみましたが、私はそのAjaxのデータソースのためだと思うので、それは動作しません。

+0

なぜ$(document).readyをjobsteps ..イベント – uzaif

+0

に追加したのですが、もともとdatatableスタイルをソケットに読み込みますが、$ document.readyなので、そこには役に立ちません – user3895503

答えて

0

回避策として、最初に完全にテーブルが作成されるのを待って、追加されたすべての要素を数えるDatatablesスタイルを呼び出します。

フォーマットされていないデータが表示されることがありますので、たとえばロードするものを表示するためにDOMコントロールを追加する必要があります。

関連する問題