AngularJS のリピーターにフィルターを適用しようとしていますが、奇妙なバグが発生しています。ページが読み込まれると、リピーターはデータを複製しているかのように動作します: 3 行ではなく 6 行です。その後、1 秒後に 3 行になります。フィルターを削除すると、3行で正常に機能します。これが私のフィルターです:
JS:
app.filter('flagged', function() {
return function(input,flag_filters) {
var filteredElements = [];
var filters = ["ALL"];
if(flag_filters.length > 0)
filters = flag_filters;
angular.forEach(input,function(element) {
angular.forEach(filters,function(color){
if(angular.equals(element.flag,color) || angular.equals("ALL",color))
filteredElements.push(element);
});
});
return filteredElements;
};
});
意見:
tr ng-repeat="file in files | flagged:filtered | orderBy:'date':true"
データ(ファイル): [{ "title":"Fake Data.docx", "flag":"red", "date":"13 Sept 2013" },{ "title":"Fake Data.docx"," flag":"red", "date":"2013 年 9 月 15 日" },{ "title":"Fake Data.docx", "flag":"green", "date":"2013 年 9 月 14 日" }]
filtered=["red","green"]
なぜこのようなパフォーマンスをしているのですか?