0

SSE リソースを提供する RESTful サービスがあります。HTML テーブルを 3 秒ごとに更新しています。私はそれにdynatableを使用しています。新しい行が追加されると、SSE はクライアントに通知するため、テーブルが更新されます。

これらの新しい行でテーブルを更新しています:

$('#mytable tr:first').after(newRows);

ただし、ダイナテーブルはこれらの新しい行に適用されていません。「process() を呼び出すまで、Dynatable は DOM のテーブルを更新しません」と読みました。そのため、新しい行を挿入した後に dynatable.process() を呼び出そうとしましたが、機能しません。

これが私のテーブルです。最初の 2 行を見てください。スタイル、ゼブラ、フォーマッターは適用されませんでした。

ダイナテーブル

ここに私のJavaScriptコードがあります:

if(typeof(EventSource)!=="undefined") {    

    var source = new EventSource("SOME_URL/sse");   

    source.onmessage = function(e) {            
        if(e.data) {              

           /* In the CrunchifyTableView method, I'm putting the json result indo table
           rows. I'm doing this because if I pass json directly to dynatable, I'm not
           able to styling some columns, like "Alerta" column (see image).*/
           var newRows = CrunchifyTableView(e.data, "registers");  

            $('#registers tr:first').after(newRows);

            // TODO
            // Update dynatable
           applyDynaTable(); // I tried reload the dynatable but it's not working
        }
    };

}
else {    
    // No support
} 


function applyDynatable() { 

$('#registers').dynatable({
    features: {
        paginate: true,
        search: false,
        recordCount: true,
        perPageSelect: false            
    },
    writers: {
        'dataEhora': function(record) {
            return formatDate(record.dataEhora); // Date formater
        }
    }               
});

}

4

1 に答える 1

0

関数applyDynatableは次のようになります。

function applyDynatable() { 
 var dynatable = $('#registers').dynatable({
 features: {
    paginate: true,
    search: false,
    recordCount: true,
    perPageSelect: false            
 },
 writers: {
    'dataEhora': function(record) {
        return formatDate(record.dataEhora); // Date formater
    }
 }).data("dynatable");
 dynatable.process();  
} 
于 2015-08-14T20:23:28.203 に答える