Estou tentando criar um filtro personalizado no AngularJS que filtrará uma lista de objetos pelos valores de uma propriedade específica. Nesse caso, quero filtrar pela propriedade "polaridade" (valores possíveis de "Positivo", "Neutro", "Negativo").
Aqui está o meu código de trabalho sem o 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>
Aqui está a matriz "$ scope.tweets" no 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"}}
O melhor filtro que eu poderia criar da seguinte maneira:
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;
};
});
Este método retorna uma matriz vazia. E nada é impresso a partir da declaração "console.log (polaridade)". Parece que não estou inserindo os parâmetros corretos para acessar a propriedade do objeto "polaridade".
Alguma ideia? Sua resposta é muito apreciada.