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.
javascript
angularjs
sh3nan1gans
sumber
sumber
Jawaban:
Anda hanya perlu menggunakan
filter
filter (lihat dokumentasi ):Fiddle
sumber
filter:{polarity:polarityToFilter}
mana$scope.polarityToFilter
diisi oleh klik pada salah satu dari tiga tombol. Apakah ini yang ingin Anda lakukan?$index
propertie pada lingkup lokal yang juga dapat Anda gunakan.The dokumentasi memiliki jawaban yang lengkap. Pokoknya begini caranya:
hanya akan memfilter
age
dalamdata
array dantrue
untuk pencocokan tepat.Untuk penyaringan yang dalam,
Ini
$
adalah properti khusus untuk filter dalam dantrue
untuk pencocokan tepat seperti di atas.sumber
Anda juga bisa melakukan ini untuk membuatnya lebih dinamis.
Maka Anda ng-repeat akan terlihat seperti ini
Filter ini tentu saja hanya akan digunakan untuk menyaring berdasarkan polaritas
sumber
Kami memiliki Koleksi seperti di bawah ini:
Sintaksis:
Contoh:
-ATAU-
Sintaksis:
Contoh:
sumber
Anda bisa mencoba ini. itu berfungsi untuk saya 'nama' adalah properti di arr.
sumber