ฉันกำลังพยายามสร้างตัวกรองแบบกำหนดเองใน AngularJS ที่จะกรองรายการของวัตถุตามค่าของคุณสมบัติเฉพาะ ในกรณีนี้ฉันต้องการกรองตามคุณสมบัติ "ขั้ว" (ค่าที่เป็นไปได้ของ "บวก", "เป็นกลาง", "เชิงลบ")
นี่คือรหัสการทำงานของฉันที่ไม่มีตัวกรอง:
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>
นี่คืออาร์เรย์ "$ scope.tweets" ในรูปแบบ 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"}}
ตัวกรองที่ดีที่สุดที่ฉันสามารถทำได้มีดังนี้:
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;
};
});
วิธีนี้จะส่งกลับอาร์เรย์ที่ว่างเปล่า และไม่มีการพิมพ์จากคำสั่ง "console.log (ขั้ว)" ดูเหมือนว่าฉันไม่ได้ใส่พารามิเตอร์ที่ถูกต้องเพื่อเข้าถึงคุณสมบัติวัตถุของ "ขั้ว"
ความคิดใด ๆ คำตอบของคุณได้รับการชื่นชมอย่างมาก