クライアントでデータテーブルを使用して、約 10,000 行のデータをリアルタイムで並べ替え/フィルタリングできるようにしています。行を個別に追加するよりも、テーブルの作成中に DataTable に行の配列を提供する方がはるかに高速です。これを実現するために、subscribe でonReady 関数を使用できます。その後、 observeを呼び出して変更を取得すると、既に提供されているデータがsubscribe
再び取得されます。
これを回避することはできますが、流星を正しく使用していないだけだと思います。アドバイスをいただければ幸いです。
サンプルコードは次のとおりです。
Meteor.subscribe("books", function(){
// Runs when subscription is complete
var mData = Books.find().fetch();
MyTable = $('#testTable').dataTable( {
'aoColumns': [
{ sTitle: 'title', sClass: 'alignRight', mDataProp: 'title'},
],
'aaData' : mData
});
// Add any new books.
Books.find().observe({added: function(item){
// ERR: Adds the books already fetched into mData as well as any new books.
MyTable.fnAddData([item]);
}});
});