Ich versuche, einen benutzerdefinierten Filter in AngularJS zu erstellen, der eine Liste von Objekten nach den Werten einer bestimmten Eigenschaft filtern wird. In diesem Fall möchte ich nach der Eigenschaft "Polarität" filtern (mögliche Werte von "Positiv", "Neutral", "Negativ").Wie nach Objekteigenschaften in angularJS zu filtern ist
Hier ist mein Arbeits Code 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 mir vorstellen konnte:
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. Und nichts wird von der "console.log (Polarität)" Anweisung gedruckt. Es scheint, als ob ich nicht die richtigen Parameter einfüge, um auf die Objekteigenschaft "Polarität" zuzugreifen.
Irgendwelche Ideen? Ihre Antwort wird sehr geschätzt.
Nizza Frage, aber Code reduziert werden könnte, großer Teil davon ist nicht relevant zur Frage. – setec