Ng-Repeat matrice à lignes et colonnes
Merci de prendre le temps de lire ça, je me demandais comment je pourrais être en mesure d'utiliser ng-repeat pour créer une grille comme une boîte d'options. Je voudrais prendre un tableau de répétition n-ième nombre d'éléments, puis de passer à la ligne suivante ou de la colonne jusqu'à ce que tous les éléments sont répertoriés. par exemple,
en supposant que j'avais un tableau comme [opt1,opt2,opt3,opt4,opt5,opt6,opt7]
je voudrais l'afficher comme ceci:
opt1 opt2 opt3
opt4 opt5 opt6
opt7
Voici une autre solution: stackoverflow.com/a/21653981/131157
stackoverflow.com/questions/27211799/...
stackoverflow.com/questions/27211799/...
OriginalL'auteur user2910240 | 2013-10-23
Vous devez vous connecter pour publier un commentaire.
C'est plus un style/balisage problème qu'une AngularJS. Si vous le voulez vraiment, vous pouvez le faire:
http://jsfiddle.net/JG3A5/
Pourquoi ne pas utiliser un <table> avec trois colonnes.
OriginalL'auteur Jahed
Désolé pour mon HAML et Bootstrap3:
Il existe une autre version, avec la possibilité d'utiliser des filtres:
OriginalL'auteur mrded
Si tous vos articles sont dans un tableau unique, votre meilleur pari est de faire une grille en CSS. Cet article devrait vous être utile: http://css-tricks.com/dont-overthink-it-grids/
Vous pouvez utiliser $index de ng-repeat pour appliquer la bonne catégorie pour votre colonne (dans ce cas, un 4 colonne de la grille):
Si vous avez un 2 dimensions tableau (divisée en lignes et colonnes), qui s'ouvre plus de possibilités comme le fait à l'aide d'un tableau HTML.
OriginalL'auteur ksimons
Je trouve plus facile de simplement utiliser ng-repeat combiné avec ng-si et de la compensation des index à l'aide de $index. L'esprit de l'arbre de jade ci-dessous:
OriginalL'auteur Ricardo Pedroni
Entre la Performance, la Dynamique et la Lisibilité
Il semble mettre de la logique dans votre JavaScript est la meilleure méthode. Je voudrais juste mordre la balle et regarder dans:
Vous pouvez ensuite créer un angulaires
filter
à gérer:Filtre:
Contrôleur:
Vue:
Avec cela, vous pouvez voir que vous obtenez
n
nombre de lignes, chacune contenant "3
" de colonnes. Lorsque vous modifiez le nombre de colonnes désirées, vous remarquerez le nombre de lignes est modifiée en conséquence (en supposant que la liste de longueur est toujours la même chose 😉).Voici un violon.
Note, que vous obtenez de l'ol'
Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
. C'est parce Angulaire est rappelant lamatrical
fonction à chaque itération. Apparemment, vous pouvez utiliser leas results
alias pour éviter Angulaire de la réévaluation de la collection, mais j'ai pas eu de chance. Pour cela, il peut être préférable de filtre de la grille à l'intérieur de votre contrôleur et utiliser cette valeur pour votre répéteur:$filter('matrical')(items)
-- mais merci de poster si vous trouver un moyen élégant de filtrage dans leng-repeat
.Je tiens à souligner, encore une fois, vous êtes probablement en direction vers le bas d'une ruelle sombre, en essayant d'écrire la logique de votre point de vue, mais je vous encourage à l'essayer, à votre avis, si vous ne l'avez pas déjà.
Modifier
L'utilisation de cet algorithme doit être combiné avec un Matrical de la Structure des Données à fournir des méthodes de
push
,pop
,splice
, et d'autres méthodes -- en tandem avec des logiques à compléter Bi-Directionnelle de Liaison de Données si vous le souhaitez. En d'autres termes, la liaison de données ne fonctionnent pas de la case (bien sûr) que lorsqu'un nouvel élément est ajouté à votre liste, une réévaluation de l'ensemble de la liste doivent avoir lieu pour garder la matrice de l'intégrité structurelle.Suggestion: Utiliser le
$filter('matrical')($scope.list)
syntaxe en combinaison avec$scope.$watch
et recompiler/calculer l'élément de positions de la matrice.Cheers!
OriginalL'auteur Cody