Ich brauche einen Rat bezüglich der Verwendung von jQuery DataTables mit Aurelia. Im Grunde laufe ich auf zwei Probleme.Verwenden von jQuery DataTables mit Aurelia
- Ich kann den besten Weg nicht finden, es zu initialisieren, nachdem die Bindungsschleife
repeat.for
abgeschlossen ist. Scheinbar funktioniert diese Schleife noch, auch nachdem derattached()
Lebenszyklus ausgelöst wurde. - Wenn ich
$(myRef).DataTables(data: myArray)
Methode verwenden, um die Tabelle aufzufüllen und Verknüpfungen (<a href-route=... click.delegate=...>
) in diese Tabelle einzufügen, scheint Aurelia die Verknüpfungen nicht zu erkennen oder den Router zu aktivieren.
Problem 1: Hier ist mein Versuch, die Tabelle zu füllen mit Aureliens Bindung. Aurelia macht die Tabelle korrekt, und ich kann nur 2-3 Sekunden warten und dann DataTables laden, aber das ist nicht der richtige Weg. Ich habe kein definitives Ereignis, um das Laden der DataTables-Klasse auszulösen, weil ich nicht weiß, wann repeat.for abgeschlossen ist.
<div class="table-responsive">
<table ref="tblUserList" class="table table-condensed table-hover table-striped" width="100%">
<thead>
<tr>
<th><span t="Username"></span></th>
<th><span t="First_name"></span></th>
<th><span t="Last_name"></span></th>
</tr>
</thead>
<tbody>
<tr repeat.for="record of records">
<td><a route-href="route: user; params.bind: {id: record.user_id}" click.delegate="$parent.select(record)">${record.user_username}</a></td>
<td>${record.p_fname}</td>
<td>${record.p_lname}</td>
</tr>
</tbody>
</table>
</div>
Problem 2: Hier ist mein Versuch die Tabelle mit der jQuery-Methode zu füllen. DataTables lädt die Tabelle erfolgreich, aber Aurelia erkennt die Verknüpfungen oder die Auslöseraktion nicht.
$(this.tblUserList).dataTable({
"paginate": true,
"pageLength": 10,
data: this.records,
columns: [
{ data: 'user_username',
fnCreatedCell: function (nTd, sData, oData, iRow, iCol) {
$(nTd).html("<a route-href='route: user; params.bind: {id:" + oData.user_id + "}' click.delegate='$parent.select(" + oData.user_id + ")'>" + oData.user_username + "</a>");
}
},
{ data: 'p_fname' },
{ data: 'p_lname' }
]
});
Kann mir jemand helfen, eines der oben genannten Probleme zu lösen? Oder ... nähere ich mich dem ganzen Thema auf die falsche Art? Ist es besser, die jQuery-Methode zum Auffüllen oder die Aurelia repeat.for
Bindungsschleife zu verwenden?
Eines Ihrer Probleme kann möglicherweise darin bestehen, dass die Schleife 'repeat.for' nie _actually_ abgeschlossen ist. Es ist an Ihre 'records'-Variable gebunden und wird daher bei jeder Aktualisierung aktualisiert. Ich bin ein wenig verwirrt darüber, wo dein Problem liegt. Ist Aurelia in der Lage, Ihre Tabelle korrekt zu erstellen, aber jQuery init's 'dataTable()' niemals? – Tom
Aurelia erstellt die Tabelle korrekt, und wenn ich 'window.setInterval (initTable(), 2000)' hinzufüge, um eine Verzögerung von 2 Sekunden hinzuzufügen, wird es korrekt eingegeben. – LStarky
Hallo, vielleicht können Sie versuchen, Daten mit Ajax https://datatables.net/examples/ajax/objects.html zu laden. Später werde ich Ihr Beispiel betrachten –