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.