J'essaie de créer un filtre personnalisé dans AngularJS qui filtrera une liste d'objets par les valeurs d'une propriété spécifique. Dans ce cas, je souhaite filtrer par la propriété "polarity" (valeurs possibles de "Positive", "Neutral", "Negative").
Voici mon code de travail sans le filtre:
HTML:
<div class="total">
<h2 id="totalTitle"></h2>
<div>{{tweets.length}}</div>
<div id="totalPos">{{tweets.length|posFilter}}</div>
<div id="totalNeut">{{tweets.length|neutFilter}}</div>
<div id="totalNeg">{{tweets.length|negFilter}}</div>
</div>
Voici le tableau "$ scope.tweets" au format JSON:
{{created_at: "Date", text: "tweet text", user:{name: "user name", screen_name: "user screen name", profile_image_url: "profile pic"}, retweet_count: "retweet count", polarity: "Positive"},
{created_at: "Date", text: "tweet text", user:{name: "user name", screen_name: "user screen name", profile_image_url: "profile pic"}, retweet_count: "retweet count", polarity: "Positive"},
{created_at: "Date", text: "tweet text", user:{name: "user name", screen_name: "user screen name", profile_image_url: "profile pic"}, retweet_count: "retweet count", polarity: "Positive"}}
Le meilleur filtre que je pourrais proposer comme suit:
myAppModule.filter('posFilter', function(){
return function(tweets){
var polarity;
var posFilterArray = [];
angular.forEach(tweets, function(tweet){
polarity = tweet.polarity;
console.log(polarity);
if(polarity==='Positive'){
posFilterArray.push(tweet);
}
//console.log(polarity);
});
return posFilterArray;
};
});
Cette méthode renvoie un tableau vide. Et rien n'est imprimé à partir de l'instruction "console.log (polarité)". Il semble que je n'insère pas les paramètres corrects pour accéder à la propriété d'objet "polarity".
Des idées? Votre réponse est grandement appréciée.
javascript
angularjs
sh3nan1gans
la source
la source
Réponses:
Il vous suffit d'utiliser le
filter
filtre (voir la documentation ):Fiddle
la source
filter:{polarity:polarityToFilter}
où$scope.polarityToFilter
est rempli par un clic sur l'un des trois boutons. Est-ce ce que vous essayez de faire?$index
propriété sur l'étendue locale que vous pouvez également utiliser.La documentation a la réponse complète. Quoi qu'il en soit, voici comment procéder:
filtrera uniquement
age
dans ledata
tableau ettrue
est pour la correspondance exacte.Pour un filtrage en profondeur,
Le
$
est une propriété spéciale pour le filtre profond ettrue
est pour la correspondance exacte comme ci-dessus.la source
Vous pouvez également le faire pour le rendre plus dynamique.
Ensuite, vous ng-répétez ressemblera à ceci
Ce filtre ne sera bien sûr utilisé que pour filtrer par polarité
la source
Nous avons la collection comme ci-dessous:
Syntaxe:
Exemple:
-OU-
Syntaxe:
Exemple:
la source
Vous pouvez essayer ceci. son travail pour moi «nom» est une propriété dans l'arr.
la source