Tôi đang cố gắng tạo một bộ lọc tùy chỉnh trong AngularJS sẽ lọc danh sách các đối tượng theo các giá trị của một thuộc tính cụ thể. Trong trường hợp này, tôi muốn lọc theo thuộc tính "phân cực" (các giá trị có thể có của "Tích cực", "Trung tính", "Tiêu cực").
Đây là mã làm việc của tôi mà không có bộ lọc:
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>
Đây là mảng "$ scope.tweets" ở định dạng 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"}}
Bộ lọc tốt nhất tôi có thể đưa ra như sau:
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;
};
});
Phương thức này trả về một mảng trống. Và không có gì được in từ câu lệnh "console.log (Polarity)". Có vẻ như tôi không chèn các tham số chính xác để truy cập thuộc tính đối tượng của "cực tính".
Có ý kiến gì không? Phản hồi của bạn được đánh giá rất cao.