Tôi đang cố gắng tạo 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" (giá trị có thể có của "Tích cực", "Trung tính", "Phủ định").Cách lọc theo thuộc tính đối tượng trong angularJS
Đây là mã làm việc của tôi 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>
Dưới đâ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 (phân cực)". Có vẻ như tôi không chèn các thông số chính xác để truy cập thuộc tính đối tượng của "phân cực".
Bất kỳ ý tưởng nào? Câu trả lời của bạn được đánh giá cao.
đẹp câu hỏi, nhưng mã có thể được giảm, một phần lớn của nó không liên quan cho câu hỏi. – setec