0

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"]

なぜこのようなパフォーマンスをしているのですか?

4

1 に答える 1