我正在尝试在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(polarity)"语句没有输出任何内容。看起来我没有插入正确的参数来访问"polarity"对象属性。
有什么想法吗?非常感谢您的回复。