Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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 ng重复自定义过滤器生成无限循环_Angularjs - Fatal编程技术网

Angularjs ng重复自定义过滤器生成无限循环

Angularjs ng重复自定义过滤器生成无限循环,angularjs,Angularjs,我正在浏览一个页面/文章列表。我想从列表中删除没有文章id的页面(它们是部分头版)。我制作了一个自定义过滤器来确定文章是否有id(“removeFrontpages”),但它生成了一个无限循环(列表被反复加载)。当我删除过滤器时,列表将加载一次 我不是在调整列表中的对象,只是过滤掉一些文章。我做错了什么?是否可以对ng重复进行筛选,或者我应该在之前(在服务/控制器中)对列表进行筛选 这是我的过滤器: "use strict"; angular.module("app") .filter

我正在浏览一个页面/文章列表。我想从列表中删除没有文章id的页面(它们是部分头版)。我制作了一个自定义过滤器来确定文章是否有id(“removeFrontpages”),但它生成了一个无限循环(列表被反复加载)。当我删除过滤器时,列表将加载一次

我不是在调整列表中的对象,只是过滤掉一些文章。我做错了什么?是否可以对ng重复进行筛选,或者我应该在之前(在服务/控制器中)对列表进行筛选

这是我的过滤器:

"use strict";

angular.module("app")
    .filter('removeFrontpages', [function() {
        return function (articles) {
            var filtered = [];

            if (typeof articles !== "undefined") {

                angular.forEach(articles, function (article) {

                    if (typeof article.id !== "undefined" && article.id !== "") {
                        filtered.push(article);
                    }

                });
            }
            return filtered;
        };

    }]);
我的指令模板如下所示:

<div class="row header">
    <div class="col-xs-1 col-xs-offset-1 header-visits"><h4><a ng-click="reorder('stats.people');">Besøg</a></h4></div>
    <div class="col-xs-9 header-title"><h4><a ng-click="reorder('title');">Titel</a></h4></div>
    <div class="col-xs-1 header-engagedtime"><h4><a ng-click="reorder('stats.engaged_time.avg');">Tid</a></h4></div>
</div>

<div ng-repeat="article in articles | removeFrontpages | orderBy: orderBy:isReverseOrder | limitTo: limit track by article.id" index-class>

    <!-- index -->
    <div class="col-xs-1 list-index">
        {{ $index+1 }}
    </div>

    <!-- visits -->
    <div class="col-xs-1">
        <span class="stats-text">{{ article.stats.people }}</span>
    </div>

    <!-- title -->
    <div class="col-xs-9">
        <a href="http://{{article.path}}" target="_blank" class="article-title">{{ article.title }}</a>

        <div class="row" ng-if="dashboardType != 'top articles from social media'">
            <div class="col-xs-12 article-stats">

                <div class="pull-left article-mobile">
                    <i class="fa fa-mobile dark-grey"></i>
                    <span class="stats-text">{{ article.stats.platform.m }}</span>
                </div>

                <div class="pull-left">
                    <i class="fa fa-link dark-grey"></i>
                    <span class="stats-text">{{ article.stats.links }}</span>
                </div>

                <div class="pull-left">
                    <i class="fa fa-clock-o dark-grey"></i>
                    <span class="stats-text">{{ article.publishDate | date: 'dd/MM hh:mm'}}</span>
                </div>

            </div> <!-- end col-xs-12 -->
        </div> <!-- end row -->

        <div class="row" ng-if="dashboardType == 'top articles from social media'">
            <div class="col-xs-12">
                <progressbar class=""
                             max="1"
                             value="(article.stats.social/ article.stats.count)"
                             type="info">
                    <span class="progressbar-text">
                        {{ (article.stats.social / article.stats.count) * 100 | number:0 }}%
                    </span>
                </progressbar>

            </div> <!-- end col-xs-12 -->
        </div> <!-- end row -->
    </div>

    <!-- engaged time -->
    <div class="col-xs-1">
        <span class="stats-text" ng-if="article.engaged_time.avg >= 0">{{ article.engaged_time.avg | secsToMMSS }}</span>
        <span class="stats-text" ng-if="article.stats.engaged_time >= 0">{{ article.stats.engaged_time | secsToMMSS }}</span>
        <span class="stats-text" ng-if="article.stats.engaged_time.avg >= 0">{{ article.stats.engaged_time.avg | secsToMMSS }}</span>
    </div>

</div> <!-- end article -->

{{article.stats.platform.m}
{{article.stats.links}
{{article.publishDate}日期:'dd/MM hh:MM'}
{(article.stats.social/article.stats.count)*100 |数字:0}}
{{article.engineering_time.avg|secsToMMSS}
{{article.stats.engineering|secsToMMSS}
{{article.stats.engaged_time.avg|secsToMMSS}

如果您试图过滤掉未定义的内容,您可以使用提供的
过滤器和Ok(确定)
过滤器,谢谢!但不幸的是,它不能解释我代码中的无限循环。此外,id从不为null或未定义,但字符串(没有id是空字符串)抱歉,您似乎试图使用
typeof article.id!==“未定义”&&article.id!==“”
。因为它们永远不会是那样的东西,我不知道你在用你的自定义过滤器做什么。我建议只删除自定义文件管理器和double
orderBy
,看看它是否有效。1。你说得对!if检查应该是article.id!=="". 2.这不是双重订货!第二个“orderBy”是一个名为“orderBy”的范围变量!