Saya mencoba membuat filter khusus di AngularJS yang akan memfilter daftar objek berdasarkan nilai properti tertentu. Dalam hal ini, saya ingin memfilter berdasarkan properti "polaritas" (kemungkinan nilai "Positif", "Netral", "Negatif").
Ini kode kerja saya tanpa 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>
Berikut ini array "$ scope.tweets" dalam format 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"}}
Filter terbaik yang bisa saya buat sebagai berikut:
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;
};
});
Metode ini mengembalikan array kosong. Dan tidak ada yang dicetak dari pernyataan "console.log (polaritas)". Sepertinya saya tidak memasukkan parameter yang benar untuk mengakses properti objek "polaritas."
Ada ide? Tanggapan Anda sangat dihargai.