Sto cercando di creare un filtro personalizzato in AngularJS che filtrerà un elenco di oggetti in base ai valori di una proprietà specifica. In questo caso, voglio filtrare in base alla proprietà "polarità" (possibili valori di "Positivo", "Neutro", "Negativo").
Ecco il mio codice di lavoro senza il filtro:
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>
Ecco l'array "$ scope.tweets" in formato 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"}}
Il miglior filtro che ho potuto trovare come segue:
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;
};
});
Questo metodo restituisce un array vuoto. E nulla viene stampato dall'istruzione "console.log (polarity)". Sembra che non stia inserendo i parametri corretti per accedere alla proprietà dell'oggetto di "polarità".
Qualche idea? La tua risposta è molto apprezzata