Je ne peux pas faire fonctionner le code suivant dans mon application de test:Tri un tableau ne met pas à jour le Dom
this.propertyWillChange('tableContent');
this.get('tableContent').sort(function (a, b) {
var nameA = a.artikel_name,
nameB = b.artikel_name;
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
return 0 //default return value (no sorting)
});
this.propertyDidChange('tableContent');
Les données se triée, mais le dom est pas mis à jour.
Le modèle ressemble à ceci:
<tbody>
{{#each NewApp.router.gridController.tableContent}}
{{#view NewApp.TableRow rowBinding="this"}}
<td style="width: 100px">{{view.row.product_no}}</td>
<td align="right" style="width: 100px">{{view.row.price}}</td>
<td>{{view.row.artikel_name}}</td>
{{/view}}
{{/each}}
</tbody>
J'ai essayé de reproduire ce problème avec un court extrait jsFiddle. Mais là ça marche. La seule différence est que je récupère les données en utilisant un appel ajax (et une configuration supplémentaire du routeur).
selectionChanged: function() {
var that = this;
if (this.selection) {
$.getJSON("api/v1/lists/" + this.selection.id + "/prices", function (content) {
that.set('tableContent', content);
});
}
}.observes('selection')
Le même code fonctionne si je copie le tableau et réaffecte le tableau copié.
Pouvez-vous fournir un jsFiddle? Il est possible de simuler un appel AJAX, donc ce cas devrait être possible de démontrer dans un violon ... – pangratz
[JSFiddle] (http://jsfiddle.net/rogergl/PY7Hr/22/) - Mais je n'ai pas de données publiques disponibles simuler l'appel ajax. – rogergl