2016-04-10 79 views
0

我使用BackboneJS填充我的表多個數據源。您不需要知道Backbone就可以解決這個問題,因爲這個問題主要是DataTables問題。如何刷新/重新加載我的DataTable從HTML源

第一次呈現集合視圖時,初始化我的Datatable。

我的問題是,我不知道如何告訴DataTables如何每次ajax請求後從DOM重新加載其數據。任何想法如何做到這一點?

另一個例子是爲每一行加載一些數據,然後相應地更新它(由Backbone View完成)。但是我需要讓Datatables知道DOM表已更改

實施例從改變表:

<table> 
    <thead>...</thead> 
    <tbody> 
    <tr> 
     <td>Some Data</td> 
     <td>Some Data2</td> 
     <td>Loading...</td> 
    </tr> 
    ... 
    </tbody> 
</table> 

到:

<table> 
    <thead>...</thead> 
    <tbody> 
    <tr> 
     <td>Some Data</td> 
     <td>Some Data2</td> 
     <td data-order="5" data-search="5"><span class="some_classes">5</span></td> 
    </tr> 
     ... 
    </tbody> 
</table> 

任何援助將不勝感激。

+0

Backbone的一個重要組成部分是將數據存儲在模型和集合中,並使視圖偵聽這些對象上的事件,以便在需要時重新呈現它自己。我認爲你需要在問題中包含你的Backbone代碼。 – Tholle

+0

好吧,我可以添加它,但事情是:我可以看到,DOM加載完美,而不使用數據表。我的整個表格都是用其所有數據呈現的,我只使用Datatables,因爲有太多的數據要顯示,所以我使用Datatables的功能進行排序,搜索等。我的Backbone組件工作得很好,但Datatables沒有拾取DOM變化,如Backbone ,所以我必須通知它從DOM刷新。 – Werner

+0

也許這可能是有幫助的:http://stackoverflow.com/questions/12934144/how-to-reload-refresh-jquery-datatable – 76484

回答

4

使用rows().invalidate()可使DataTable中爲選定行保存的數據無效。

例如,使用無效原始數據源中的所有行:

var table = $('#example').DataTable(); 

table 
    .rows() 
    .invalidate() 
    .draw(); 

請注意draw()將表恢復到拳頭頁面。要保留頁面,請改用draw(false)

+0

偉大thanx我可以看到,DataTable正在從DOM重新加載成功。 – Werner