recherche avec filter dans angular js

Ce sujet est résolu
Default
,

salut, j'ai un probléme en angular js , quand il fait recherchepar filter ,quand il tapez un mot ou caratcére différent de filter l'affichage c'est page vide (c'est logique car n' pas des résultats) mais je peut fairte quand il tapez un mot ou caractére différent de filter la resultat est text vide ar exemple ,comment faire ca et merci d'avance

11 Réponse

4307
,

Bah là moi j'aurai mis un ng-show (ou ng-if) avec comme expression test.length > 0 sur l'élément qui contient ng-repeat.
Après s'il y a une valeur à mettre directement dans ng-repeat, je ne pourrai pas te le dire; mais les pro angular te le diront :x

47855
, Il a répondu à ma question !

Salut,

Rien compris, tu peux être plus explicite stp ?

Default
, Il a répondu à ma question !

@betaWeb , cette exemple explique bien

http://codepen.io/KazuyoshiGoto/pen/nyDJr

le probléme quand il tapez dans champ text un mot qui n'existe pas dans ton base il n'affiche rien , comment faire quand il tape dans la champ de recherche un mot n'existe pas dans la base in retourne un message d'erreur (par exemple :ton recherche n'existe pas )

merci d'avance

Default
, Il a répondu à ma question !

aide moi s'il vous plait

52315
, Il a répondu à ma question !

Tu peux sûrement faire quelque chose avec ngIf.

Default
, Il a répondu à ma question !

@ocvihoo
je travaille avec directive ngIf mais je trouve pas la résultat qui je veux :(

4307
, Il a répondu à ma question !
Default
, Il a répondu à ma question !

@PhiSyX
je fais cà


<!DOCTYPE html>
<html>
<body>

<div ng-app="test" ng-controller="tabl"> 


<p><input type="text" ng-model="test"></p>


<section  ng-repeat="tett in med | filter : test ">
        <div ng-if="test.length !== 0">
            <h1 >{{ tett }}</h1> 
        </div>

        <div ng-if="test.length == 0">
            <h1 >404</h1> 
        </div>

</section> 


</div>

</body>
</html>

quand il length du ng-model test != 0 il affiche lé mot recherchée mais quand il mot recherchée est différent de data il n'affiche rien et c'est logique car il n'ya pas des tests sur ce condition mais quandil input de recherche est vide il affiche liste de 404 et aussi c'est logique car je fait cette condition dans ng-repeat et moi je peux afficher un seul message 404
comment faire ça et merci d'avance

4307
, Il a répondu à ma question !

Ton expression est incorrect car tu test la présence d'une valeur du ng-model or tu devrais tester la longueur du tableau ici appellé med.
Pi je ne suis pas assez callé sur Angular mais assez sur d'autres framework pour te dire que cette condition tu dois la faire en dehors de l'ng-repeat.

<div ng-repeat="tett in med | filter : test">{{ tett }}</div>
<div ng-if="med.length === 0">404</div>

Sauf que j'ai testé et ça ne fonctionne pas "directement" comme on le voudrait.
Il te faut stocker les résultats mais seulement après avoir été traité par le filtre, il te faut ajouter le mot clé as dans ton expression repeat

Donc ici:

<div ng-repeat="tett in med | filter : test as results">{{ tett }}</div>
<div ng-if="results.length === 0">404</div>

Et ça devrait fonctionner.

Le lien que j'ai donné, montre pareil. (https://github.com/angular/angular.js/blob/master/test/ng/directive/ngRepeatSpec.js#L433)
Dans la doc, il y a aussi un exemple: https://docs.angularjs.org/api/ng/directive/ngRepeat#example

Default
, Il a répondu à ma question !

magnifique marche bien , juste maintenant quand il ne tapez rien à recherche je trouve tous la data dans la section de ng-repeat
quelle est la solution pour quand il ne tapez rien il ne trouve rien

Default
, Il a répondu à ma question !

magnifique mon ami PhiSyX ;)