Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
中继器上的AngularJS自定义过滤器已损坏_Angularjs_Filter_Angularjs Filter - Fatal编程技术网

中继器上的AngularJS自定义过滤器已损坏

中继器上的AngularJS自定义过滤器已损坏,angularjs,filter,angularjs-filter,Angularjs,Filter,Angularjs Filter,我试图在AngularJS中的中继器上应用一个过滤器,但我有一个奇怪的错误正在发生。当页面加载时,中继器就好像在复制数据:6行而不是3行。然后一秒钟后,它转到3行。当我移除过滤器时,它会以3行的方式工作。这是我的过滤器: JS: })) 视图: 数据(文件): [{ “标题”:“伪造数据.docx”, “旗帜”:“红色”, “日期”:“2013年9月13日” },{ “标题”:“伪造数据.docx”, “旗帜”:“红色”, “日期”:“2013年9月15日” },{ “标题”:“伪造数据.doc

我试图在AngularJS中的中继器上应用一个过滤器,但我有一个奇怪的错误正在发生。当页面加载时,中继器就好像在复制数据:6行而不是3行。然后一秒钟后,它转到3行。当我移除过滤器时,它会以3行的方式工作。这是我的过滤器:

JS:

}))

视图:

数据(文件): [{ “标题”:“伪造数据.docx”, “旗帜”:“红色”, “日期”:“2013年9月13日” },{ “标题”:“伪造数据.docx”, “旗帜”:“红色”, “日期”:“2013年9月15日” },{ “标题”:“伪造数据.docx”, “旗帜”:“绿色”, “日期”:“2013年9月14日” }]


为什么它会这样执行?

不确定为什么需要forEach(输入,…),因为过滤器会自动应用于中继器中的每个文件

除非要比较对象/数组,否则请使用JavaScript等式x===y而不是angular.equals()


出于性能原因,您应该小心中继器中的复杂过滤器。

当我通过过滤器使用firebug时,输入始终是整个阵列。当我将输入视为数组的元素时,它不返回任何内容。我想我显然遗漏了一些关于这些定制过滤器如何工作的信息。变量过滤器=[“全部”];如果(flag_filters.length>0)filters=flag_filters;if(filters.indexOf(input)!==-1)返回输入;问题不在于我是如何提出数据服务请求的。实际上是叫了两次!感谢您的帮助。ngRepeat上的筛选器将作为输入传入整个集合。
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"
filtered=["red","green"]