È possibile bloccare l'ordine corrente mentre si sta modificando. Di 'la tua html si presenta così:
<tbody ng-repeat="item in items | orderBy:orderBy:reverse">
<tr ng-click="startEdit()">
<td>{{item.name}}</td>
</tr>
</tbody>
Nel vostro controller si scrive:
var savedOrderBy, savedReverse;
$scope.startEdit() = function() {
$scope.items = $filter('orderBy')($scope.items, $scope.orderby, $scope.reverse);
for (var i = 0; i < $scope.items.length; ++i) {
if (i < 9999) {
$scope.items[i]['pos'] = ("000" + i).slice(-4);
}
}
savedOrderBy = $scope.orderBy;
savedReverse = $scope.reverse;
$scope.orderBy = 'pos';
$scope.reverse = false;
};
Prima che l'utente inizia a modificare, per prima cosa ordinare gli elementi attuali esattamente nello stesso ordine in cui attualmente compaiono nel pagina. Lo fai chiamando l'ordine da $ filtro() con i parametri di ordinamento correnti.
Quindi si passa sopra gli elementi - ora ordinati - e si aggiunge una proprietà arbitraria (qui "pos") e si imposta sulla posizione corrente. Io blocco zero in modo tale che la posizione 0002 si collochi prima di 0011. Forse non è necessario, non ne ho idea.
Normalmente si desidera ricordare l'ordine corrente, qui nelle variabili scope "savedOrder" e "savedReverse".
E infine dici angolare per ordinare con quella nuova proprietà "pos" e voilà l'ordine della tabella è bloccato, perché quella proprietà semplicemente non cambia durante la modifica.
Quando hai finito di modificare, devi fare il contrario. È ripristinare il vecchio ordinamento dalla variabili scope "savedOrder" e "savedReverse":
$scope.endEdit = function() {
$scope.orderBy = savedOrderBy;
$scope.reverse = reverse;
};
Se l'ordine del $ scope.items questioni di array per voi, avrebbe anche per ordinare di nuovo al suo ordinamento originale .
fonte
2015-11-19 15:10:43
Quando il server invia miei dati ce l'ho includono una colonna aggiuntiva 'sortby', che ha il campo (s) voglio il tipo da passare, poi ng-repeat usa che per l'orderBy. Questo campo non è nella modifica, quindi non cambia finché non ottengo di nuovo le file dal server. Cioè Quando "salvi" un record, i dati di ritorno vengono recuperati dal database, incluso sortBy, che sostituisce la stessa riga in $ scope, aggiornando quindi l'ordinamento sulla pagina solo dopo che la modifica è stata completata. –