J'ai donc un tableau que j'utilise ng-repeat pour restituer mais je veux inverser cette liste. Auparavant, j'ai utilisé un filtre obtenu de cette réponse: angular ng-repeat in reverse
Mais maintenant, je reçois une erreur: "TypeError: Object # n'a pas de méthode 'slice' Dans Scope." Je ne sais pas si c'est à cause d'une nouvelle version d'AngularJS ou s'il me manque quelque chose.
Ceci est mon code de filtre:
.filter('reverse', function () {
return function(items) {
return items.slice().reverse();
};
Ceci est le code de ma vue de l'intérieur de la div:
data-ng-repeat='feed in feeds | reverse'
Pour rendre le tableau rendu en sens inverse et ordonné par 'id', ceci devrait fonctionner:
data-ng-repeat="feed in feeds | orderBy:'id':true"
Laissez-moi savoir si cela fonctionne pour vous.
Pour votre référence: http://jsfiddle.net/byizzy/pgPVU/3/
C'est un peu délicat, mais pour toutes les personnes intéressées par l'inversion d'un tableau sans créer de nouvelles fonctions de prédicat et/ou modifier le tableau, etc.
ng-repeat="feed in feeds | orderBy:'':true"
ou
ng-repeat="feed in feeds | orderBy:'-'"
EXPLICATION
si vous laissez le second paramètre vide, alors Angular triera selon l'ordre par défaut du tableau (index), ajouter true
à la fin activera le paramètre reverse
de Angular 'orderBy
Veuillez utiliser directement la fonction slice de script Java avec une inversion telle que celle-ci:
data-ng-repeat="item in items.slice().reverse()"
Quelle est la structure d'un seul flux? Il semble que vous puissiez utiliser le filtre intégré d'angular pour le commander comme vous le souhaitez. Par exemple, si le champ "id" est ce qui fournit "order" dans le tableau, procédez comme suit:
data-ng-repeat='feed in feeds | orderBy:id'
Si vous voulez que cela soit inversé, faites simplement:
data-ng-repeat='feed in feeds | orderBy:id:reverse'
Cela a-t-il du sens? Vous n'êtes pas sûr d'avoir besoin de votre propre filtre. Si tel est le cas, essayez peut-être de déboguer (c'est-à-dire écrire sur la console ou autrement) pour voir ce que vous êtes réellement en train de transmettre. Si ce n'est pas un tableau, c'est votre problème, sinon essayez ceci à la place:
return Array.prototype.slice.call(items).reverse();
Faites-moi savoir si l'un de ces travaux pour vous!
J'espère que cela résoudra votre problème
data-ng-repeat='feed in feeds.reverse()'
une solution qui ne trie pas le tableau, mais le copie et l'inverse: ng-repeat="item in items | orderBy : '[]': true"