2016-04-10 10 views
0

Ich verwende BackboneJS, um meine Tabelle mit mehrere Datenquellen zu füllen. Sie müssen Backbone nicht kennen, um bei dieser Frage behilflich zu sein, da es sich hauptsächlich um ein DataTables-Problem handelt.Wie aktualisiere ich meine DataTable aus der HTML-Quelle

Ich initialisiere meine Datentabelle, wenn die Sammlungsansicht das erste Mal gerendert wird.

Mein Problem ist, dass ich DataTables nicht sagen kann, wie seine Daten aus dem DOM nach jeder Ajax-Anforderung neu zu laden. Irgendeine Idee, wie man das macht?

Ein anderes Beispiel ist das Laden einiger Daten für jede Zeile und das anschließende Aktualisieren (durch Backbone View). Aber Ich muss Databases wissen lassen, dass die DOM-Tabelle geändert hat.

Beispiel die Tabelle ändert:

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

An:

<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> 

Jede Hilfe wäre sehr dankbar.

+0

Ein großer Teil von Backbone besteht darin, Ihre Daten in Modellen und Sammlungen zu speichern und Ansichten auf Ereignisse auf diesen Objekten zu hören, damit sie sich bei Bedarf selbst rendern können. Ich denke, Sie müssen Ihren Backbone-Code in die Frage aufnehmen. – Tholle

+0

Okay, ich könnte es hinzufügen, aber die Sache ist: Ich kann sehen, dass das DOM perfekt lädt, ohne DataTables zu verwenden. Meine gesamte Tabelle wird mit all ihren Daten gerendert, ich benutze nur Datatables, da zu viele Daten angezeigt werden. Daher verwende ich Datatables zum Sortieren, Suchen usw. Meine Backbone-Komponenten funktionieren sehr gut, aber Datatables nimmt keine DOM-Änderungen wie Backbone auf , also muss ich es benachrichtigen, um von DOM zu aktualisieren. – Werner

+0

Vielleicht könnte dies hilfreich sein: http://StackOverflow.com/Questions/12934144/how-to-Reload-refresh-jquery-datatable – 76484

Antwort

4

Verwenden Sie rows().invalidate(), um die Daten in DataTables für die ausgewählten Zeilen ungültig zu machen.

Zum Beispiel alle Zeilen unter Verwendung der ursprünglichen Datenquelle ungültig zu machen:

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

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

Bitte beachten Sie, dass draw() die Tabelle auf die Faust-Seite zurückgesetzt. Um die Seite beizubehalten, verwenden Sie stattdessen draw(false).

+0

Great Thanx Ich kann sehen, dass die DataTable von DOM erfolgreich neu geladen wird. – Werner

Verwandte Themen