Ich versuche, in AngularJS einen benutzerdefinierten Filter zu erstellen, der eine Liste von Objekten nach den Werten einer bestimmten Eigenschaft filtert. In diesem Fall möchte ich nach der Eigenschaft "Polarität" filtern (mögliche Werte von "Positiv", "Neutral", "Negativ").
Hier ist mein Arbeitscode ohne Filter:
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>
Hier ist das Array "$ scope.tweets" im JSON-Format:
{{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"}}
Der beste Filter, den ich finden konnte, ist wie folgt:
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;
};
});
Diese Methode gibt ein leeres Array zurück. Aus der Anweisung "console.log (Polarität)" wird nichts gedruckt. Es scheint, als würde ich nicht die richtigen Parameter einfügen, um auf die Objekteigenschaft "Polarität" zuzugreifen.
Irgendwelche Ideen? Ihre Antwort wird sehr geschätzt.