【问题标题】:Angular custom filter doesnt work on serverAngular 自定义过滤器在服务器上不起作用
【发布时间】:2015-06-27 18:19:33
【问题描述】:

我正在学习 Angular,所以我创建了休闲待办事项应用程序。自定义过滤器在 localhost 上有效,而在托管时则无效。我没有收到任何错误消息,也没有显示数据。如果我从li 中删除taskPriority:this,数据显示这意味着服务器上一切正常,但是,当然,过滤不起作用。我将范围(this)传递给过滤器。

<li ng-repeat="task in tasks | taskPriority:this | filter:taskname as ukupno track by $index">
    <input class="edit_task" ng-blur="editTask(task.id, task.task)" ng-model="task.task" value="{{ task.task }}" type="text">
</li>

过滤器检查数组 fSPriorites 中是否有优先级 (1,2,3) 匹配任务中的优先级,如果是则返回这些任务。

angular.module('TaskFilter', []).filter('taskPriority', function() {
    return function(task, scope) {
        var filtered = [];
        angular.forEach(task, function(task) {
            if($.inArray(task.priority, scope.fSPriorites) != -1)
                filtered.push(task);
        });
        return filtered;
    };
});

我该如何调试?

【问题讨论】:

  • 尝试更改&lt;li ng-repeat="task in ukupno = (tasks | taskPriority:this | filter:taskname) track by $index"&gt;
  • 不幸的是,虽然它在本地运行正常,但在托管服务器上没有结果。

标签: javascript angularjs angularjs-ng-repeat ng-repeat angularjs-filter


【解决方案1】:

我不明白您为什么要将范围传递给文件过滤器。这不是一个好习惯。试试下面的代码。

HTML

<li ng-repeat="task in tasks | taskPriority:this.fSPriorites | filter:taskname as ukupno track by $index">
    <input class="edit_task" ng-blur="editTask(task.id, task.task)" ng-model="task.task" value="{{ task.task }}" type="text">
</li>

过滤器

angular.module('TaskFilter', []).filter('taskPriority', function() {
    return function(task, fSPriorites) {
        var filtered = [];
        angular.forEach(task, function(task) {
            if($.inArray(task.priority, fSPriorites) != -1)
                filtered.push(task);
        });
        return filtered;
    };
});

希望这可以帮助你。谢谢,

【讨论】:

  • 还是不行。我没有得到任何数据angular-laravel.wc.lt/#/tasks 但如果我从 li 标签中删除对自定义过滤器的调用,它就可以工作。 postimg.org/image/gqj7ouck7 真的很奇怪,但我这样做只是为了练习,所以没什么大不了的。谢谢你的时间
  • @Marko 可能是服务器上的响应错误..或者fSPriorites 范围变量发生了一些不好的事情。可能是nullundefined..这可能导致if($.inArray(task.priority, fSPriorites) != -1) 为假并且没有记录被过滤
  • 问题是由于某种原因 inArray (以及我也尝试使用的 indexOf )无法正常工作。最后它与每个循环一起工作。 ty
  • 此外,$.inArray 将永远无法在 IE8 中工作。这很酷。很高兴能帮助您。
猜你喜欢
  • 2012-08-22
  • 2017-08-16
  • 1970-01-01
  • 2021-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
相关资源
最近更新 更多