ng-table ne fonctionne pas pour la dynamique de données
J'ai créé un tableau et je suis en utilisant le protocole http pour charger les données dans les tables. Donc, à chaque clic, ma table de données est en train de changer, mais je ne vois pas la mise à jour des données dans la table.
J'avais créé un exemple de Plunker pour la référence. Dans mon projet, Quand je clique sur Recharger à Nouveau les Données, les données du tableau est modifiée, mais après 2-3 cliquez sur elle ne change pas. Quelqu'un sait, comment le résoudre..
OriginalL'auteur Vishal Khode | 2014-04-27
Vous devez vous connecter pour publier un commentaire.
C'est un problème avec le ngTable directive. Il met à jour uniquement lorsque
data.length
changements. Jetez un oeil à ce plunk. J'ai mis $champ['tableParams1'] null et à l'intérieur de la$timeout
j'ai mis les nouvelles données. Cette forces angularJs pour faire un nouveau cycle. Ainsi, dans le premier cycle de l'ngTable voit les données.la longueur passe à 0 et dans le nouveau cycle de la ngTable voit les données.longueur de nouveau changé. Si vous n'utilisez pas l' $timeout, le ngTable verrez que les données.la longueur reste le même qu'avant et ne rien faire.un très vilain hack pour ne pas montrer toute erreur dans la console: plnkr.co/modifier/dtlKAHwy99jdnWVU0pc8?p=preview
Même si c'est laid, mais c'est le plus parfait solution que je vois maintenant..Merci beaucoup, ce marquage comme une réponse.. 🙂
Le plunk code ne semble pas fonctionner, j'ai essayé dans plusieurs navigateur, quelques erreurs JS dans le dev de la console.
essayez cette plunk plnkr.co/modifier/jKWwCmbayhPXNCdSfVVt?p=preview
OriginalL'auteur csbenjamin
Avec quelques tâtonnements, j'ai trouvé un semblant de solution la mieux adaptée à la question qu'indiqué dans la plunkrs. Pour plus de clarté, je suis en utilisant $ressource dans un service pour récupérer mes données. Quand j'ai ajouter un enregistrement par l'intermédiaire d'un modal, à première vue, il ne serait pas en mesure de télécharger le ng-table après la fermeture de la modale. J'ai trouvé un moyen qui fonctionne pour moi:
Malheureusement, je ne peux pas donner une explication claire des raisons pour expliquer pourquoi cela fonctionne et d'autres méthodes ne le sont pas. Par exemple, si vous n'utilisez pas la resetTableparams (), fonction mais le laisser codé en dur, la table n'est pas mise à jour. En quelque sorte, Angulaire s digest cycle aime mieux 🙂 Si quelqu'un a une bonne explication, merci de partager!
Les données filtrées doivent être également utilisé pour la commande, sinon c'est de prendre les données non filtrées si le filtrage et la commande est appliquée:
var filteredData = params.filter() ? $filter('filter')(data, params.filter()) : data; var orderedData = params.sorting() ? $filter('orderBy')(filteredData , params.orderBy()) : filteredData;
OriginalL'auteur jvdp
Vous pouvez utiliser directement la méthode fournie
$scope.tableParams.reload();
OriginalL'auteur
Je ne suis pas sûr de la cause exacte de la mauvaise incrémentation, mais le problème, c'est peut-être plus en raison de l'approche. Vous devez joindre le comte de la portée par
$scope.count
, et ensuite utiliser leng-click
directive de l'incrémenter:<button type="button" ng-click="count++;"
.Il serait aussi plus facile pour vous/pour les autres à lire et à déboguer si vous externalisé la
$scope.tableParams
et les données de$scope.table1
conditionnelle chose:Je suis également pas sûr de ce que vous avez obtenu avec le
$compile
à l'intérieur du contrôleur. Il peut rendre votre tâche plus facile si vous examiné certaines choses à propos de l'écriture Angulaire contrôleurs avant de se plonger dans l'utilisation d'un module tiers.OriginalL'auteur user128268
Je travaillais sur ng-tables avec des données dynamiques (ajout/suppression),
J'ai été en utilisant un appel ajax pour apporter des modifications à la base de données, et la
success: function() {}
propriété apporter des modifications à latableParams
mais les changements ne s'affichaient pas sur la page, sauf si j'ai actualisé, avec un peu de
console.log()
', j'ai trouvé que lasuccess: function() {}
en fait ne s'exécute jamaismais il y a une autre fonction qui s'exécute toujours,
complete: function() {}
Je sais que c'est logiquement du mal à mettre le code qui est censé fonctionner uniquement après un appel réussi à
complete: function() {}
mais si monsuccess:
fonction n'est pas de travail, ce correctif n'est pas mauvais, surtout en sachant que le changement est toujours avec succès à la base de donnéesc'est étrange parce que la réussite d'appel fonctionne sur d'autres pages du site, mais il ne fonctionne pas sur certains autres.
EDIT:
eh bien, ce correctif ne résout pas le problème lorsque la longueur des données ne change pas "de l'édition du texte dans les données" comme mentionné ci-dessus,, frustrant...
OriginalL'auteur Ace
Pour résoudre le problème, assurez-vous que vous avez réglé la
ng-controller="yourController"
qu'une seule fois dans votre page.Code ci-dessous ne sera pas de mise à jour des données:
Résoudre le problème en supprimant supplémentaire
ng-controller
dans votre page html:OriginalL'auteur mac13v