L'application d'un angularjs filtre après le bouton “Appliquer” cliquez sur
J'ai une grande liste de données (4000+ éléments). Quand on commence à taper mon navigateur se fige (jusqu'à 15 secondes). J'ai donc besoin de désactiver l'auto-fonctionnalité de filtre, et de lier la fonction de filtre pour le clic sur le bouton.
À la recherche de la réponse via Google n'a pas donné de résultats. Comment je peux faire cela? Aider moi s'il vous plaît 🙂
Code:
<input ng-model="search.phone" type="text" placeholder="Телефон...">
<input ng-model="search.name" type="text" placeholder="Имя...">
<input ng-model="search.city" type="text" placeholder="Город...">
<div ng-repeat="user in users | filter:search" class="user_block" ng-include src="userTemplate"></div>
et du contrôleur:
app.controller("smsCtrl", ['$scope', 'smsData', 'createDialog', '$http', '$filter', function($scope, smsData, createDialog, $http, $filter){...}
Vous pouvez poster votre code? J'ai filtré environ 150k d'objets et m'a pris 4 à 6 sec. BTW, vous pouvez mettre en œuvre chargeur
que voulez-vous dire "filtre automatique", comment voulez-vous du filtre de votre article
Aussi nous dire combien de données de chaque article, vous montrer? Si il y a beaucoup de données-lié champs pour chaque élément de tableau puis le rendu de la liste peut provoquer des problèmes de performances.
ajoutez le code.
Je veux dire que la recherche commence immédiatement après que j'ai commencer à taper quelque chose dans l'entrée.
que voulez-vous dire "filtre automatique", comment voulez-vous du filtre de votre article
Aussi nous dire combien de données de chaque article, vous montrer? Si il y a beaucoup de données-lié champs pour chaque élément de tableau puis le rendu de la liste peut provoquer des problèmes de performances.
ajoutez le code.
Je veux dire que la recherche commence immédiatement après que j'ai commencer à taper quelque chose dans l'entrée.
OriginalL'auteur sashok1337 | 2013-11-05
Vous devez vous connecter pour publier un commentaire.
J'ai rencontré quelque chose de semblable en train d'aider un collègue (bien que le filtrage de la recherche étant déclenchée manuellement est souhaitable dans notre cas) et est venu avec un semblable, mais un peu plus simple solution.
Utiliser votre original répéter div.
Créer un objet pour ranger vos entrées de l'utilisateur.
Joindre votre entrée à cette saisie de l'utilisateur de l'objet.
Créer une fonction qui boucle les propriétés de l'entrée de l'utilisateur de l'objet et de la copier sur votre objet de recherche.
Enfin, créer un bouton pour appeler votre fonction de recherche.
J'espère que cela aide quelqu'un.
C'est une bonne solution, mais au lieu d'une boucle dans les propriétés, vous pourriez faire:
Object.assign($scope.search, $scope.userInput);
.OriginalL'auteur Adam Nierzad
Peut-être vous pouvez essayer d'ajouter un anti-rebond sur elle et d'oublier le bouton.
Suivre un lien à un bon anti-rebond code pour appliquer les DOM créée par Lars Gersmann. Vous pouvez regarder son JSFiddle exemple de comment sa va le travail à la fin de l'article.
De pull request #2129 d'AngularJS projet sur GitHub:
Suivre soufflet une approche agréable de savoir comment utiliser un anti-rebond
Source: Github - Angular-UI
tks pour obtenir des conseils. Peut-être que la réponse est maintenant mieux expliquer mon approche à ce problème.
OriginalL'auteur dnlbox
J'ai trouvé la solution!
Changement:
:
Ajouter "applySearchFilter" la fonction de contrôleur
Et ajouter du code html de bouton filtre:
Et cela fonctionne!
*Remarque, que j'ai renommé ng-model="recherche.*" ng-model="filtres.*" dans les entrées.
OriginalL'auteur sashok1337