Angulaire ngGrid sélectionner une ligne au chargement de la page
Ma question est une extension pour thisquestion
L'obtention de sélectionner des lignes de ng-grille?
plunker - http://plnkr.co/edit/DiDitL?p=preview
J'ai besoin d'une rangée d'être sélectionné au chargement de la page et j'ai besoin d'éviter à l'écoute de "ngGridEventData'
appelant $champ d'application.gridOptions.selectRow(2, true); dans le contrôleur de l'organisme ne parvient pas, car la grille n'a pas été chargé.
en évitant l'écoute de ngGridEventData est dû au fait que j'ai besoin de la manette pour écouter un événement déclenché avant et en fonction de ça j'ai besoin de sélectionner le nggrid ligne.
des idées?
OriginalL'auteur Sanath | 2013-08-29
Vous devez vous connecter pour publier un commentaire.
Pour moi, aucune des réponses travaillé (j'utilise ng-grille de v2.0.14).
La réponse sélectionnée fonctionne probablement parce que les données n'est pas grand, ou n'est pas chargé par le biais d'un appel ajax, sinon vous ne pouvez pas sélectionner une ligne "avant" ngGridEventData depuis l'événement est déclenché lorsque les lignes sont rendus et que vous ne pouvez pas sélectionner une ligne si elle n'a pas été rendue encore.
Si l'une de ces conditions n'est pas vérifiée ou la grille de prendre trop de temps que d'habitude pour rendre ensuite à la réponse choisie ne fonctionne pas.
J'ai une grille de défilement avec près de 2000 lignes, mais je n'ai pas de restriction sur l'écoute de la ngGridEventData j'ai donc travaillé sur ce, bien qu'il a un comportement bizarre pour moi: La ngGridEventData feux exactement 4 fois pour moi, à deux reprises avant que les données de l'arrivée de l'appel ajax et deux fois après.
J'ai utilisé ce plugin jquery http://benalman.com/projects/jquery-throttle-debounce-plugin/ (il peut être utilisé même sans jQuery) pour faire en sorte que la fonction a été appelée qu'une seule fois.
Et comme ce n'est pas assez, le "selectRow/selectItem" fonction déclenche l' "afterSelectionChange" deux fois (la première fois avec la mauvaise ligne, pour certaines raisons). C'est ce que j'avais à faire pour s'assurer que l'événement est déclenché qu'une seule fois et uniquement pour la ligne correcte.
C'est ce qui se passe pour moi:
J'ai donc dû utiliser ceci:
Voici un exemple de code:
OriginalL'auteur valepu
Ajouter
$timeout
à votre Contrôleur et de faire ceci:Exemple: http://plnkr.co/edit/hDv7b8?p=preview
J'ai besoin de mettre parce que l'?
Oups. Vous avez besoin de le mettre dans un $timeout parce que la grille n'est pas initialisé lorsque le Contrôleur est créé. Une autre solution serait de faire une directive.
Ick. odeur de Code. Si le délai est trop court, il ne fonctionnera pas tant que la grille ne sera pas défini. S'il est trop long, l'utilisateur sera en attente pour voir la sélection de prendre place. J'ai cherché sur google et n'ai pas trouvé une bonne solution, mais je ne sera certainement pas à l'aide. Tous les professionnels de la présentation que pour la révision du code ne serait pas obtenir un très dieu annuel d'évaluation. La solution doit être basé sur l'événement, avec l'événement, ce qui signifie que la grille a été entièrement rempli. Peut-être en ng-grille v3?
regarde de mal, mais il ne l'est pas. C'est des cadres pour vous, ils ont tous leurs particularités. (Je sais, ça fait deux ans, désolé, mais vous avez été très opiniâtre! J'espère que les gens qui font de la révision du code de savent leur manière autour le cadre de l'utilisation...)
OriginalL'auteur user508994
Une solution sans délai d'attente peut être trouvé ici:
https://github.com/angular-ui/ui-grid/issues/2267
et ici:
Pré-Sélectionner les lignes de la charge avec angular-ui-grille
Apparemment modifyRows nécessite v3.0.0-rc.22+
OriginalL'auteur RobE
Ok, la réponse a été décerné il y a longtemps, mais je pense toujours qu'il a une odeur de code (n'en déplaise à l'affiche, mais il est sous-optimale.
Ce que j'ai fait était d'utiliser la grille de l'
ngGridEventData
événement.Vous devez être prudent, car il se déclenche plusieurs fois (une fois pour chaque ligne ajoutée), mais, puisque nous savons que la taille des données qui permettra de remplir la grille et, depuis l'événement, nous permet d'examiner combien de lignes ont été rendus, que nous pouvons en dire, lors de la dernière rangée est rendu, ce qui signifie que la grille n'est pas entièrement affichée (REMARQUE: je n'ai pas tester avec le défilement des grilles, où certaines lignes peuvent ne pas être visibles, quelqu'un pourrait s'il vous plaît confirmer si cela fonctionne dans le chapeau cas? Personnellement, je n'utilisez jamais de grilles de défilement (c'est une page de navigateur, pas un ordinateur de Bureau).
Quelque chose comme ceci:
OriginalL'auteur Mawg