Estoy tratando de crear un filtro personalizado en AngularJS que filtre una lista de objetos por los valores de una propiedad específica. En este caso, quiero filtrar por la propiedad "polaridad" (valores posibles de "Positivo", "Neutral", "Negativo").
Aquí está mi código de trabajo sin el 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>
Aquí está la matriz "$ scope.tweets" en 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"}}
El mejor filtro que pude encontrar de la siguiente manera:
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 devuelve una matriz vacía. Y nada se imprime desde la declaración "console.log (polaridad)". Parece que no estoy insertando los parámetros correctos para acceder a la propiedad del objeto de "polaridad".
¿Algunas ideas? Su respuesta es muy apreciada.
