Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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/1/angularjs/21.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
Javascript HTML中按条件进行的角度自定义筛选不';行不通_Javascript_Angularjs_Angularjs Ng Repeat_Ng Repeat_Angularjs Filter - Fatal编程技术网

Javascript HTML中按条件进行的角度自定义筛选不';行不通

Javascript HTML中按条件进行的角度自定义筛选不';行不通,javascript,angularjs,angularjs-ng-repeat,ng-repeat,angularjs-filter,Javascript,Angularjs,Angularjs Ng Repeat,Ng Repeat,Angularjs Filter,我是个新手,所以我的问题可能看起来很简单或愚蠢,但我没有找到任何解决办法。 我的控制器中有一个集合(例如,一个整数集合),我想对它进行过滤,并获取条件为true的项 起初,我试着这样做: <div>{{myCollection.find(item => item === 2)}}</div> {{myCollection.find(item=>item==2)} 但它不起作用。 然后我找到了另一种方法(我不喜欢这种方法,因为我总是只有一个元素可以显示,而且不需要

我是个新手,所以我的问题可能看起来很简单或愚蠢,但我没有找到任何解决办法。 我的控制器中有一个集合(例如,一个整数集合),我想对它进行过滤,并获取条件为true的项

起初,我试着这样做:

<div>{{myCollection.find(item => item === 2)}}</div>
{{myCollection.find(item=>item==2)}
但它不起作用。 然后我找到了另一种方法(我不喜欢这种方法,因为我总是只有一个元素可以显示,而且不需要重复):


{{item}}
而且它也不起作用。 以下是我的努力:


我的问题有什么可能的解决办法吗?在控制器中计算所需字段并将其传递给视图并不适合我(很遗憾)。

您可以在控制器中定义一个过滤函数,如下所示:

$scope.filterFn = function(val){
    return val === 2;
};
然后在模板中使用它,如下所示:

<div ng-repeat="item in list | filter:filterFn">
    <div>{{item}}</div>
</div>

{{item}}

Tha说,这相当于从一开始就过滤数组,所以我不确定这是否满足您的需要。如果你有一个特殊的用例,这不适合在评论中告诉我。

你有语法错误。您不应该在过滤器中提及任何
对象
,因为您直接过滤的是正在循环的实际对象。最后一个选项
true
是因为我们要执行精确检查

HTML

<div ng-repeat="item in list | filter: 2: true">
    <div>{{item}}</div>
</div>

{{item}}

我会做这样的事

.controller('SomeController',function($scope){

 // get the list from somewhere
  $scope.list  = [] // some array for instance

  $scope.dataList = list.filter(function(i){
     return i.someVal==list.someVal; // condition that satisfy your req
  });

});
现在在视图中使用它作为

<div ng-repeat=" item in dataList"> 
   {{item}}
</div>

谢谢!这正是我要找的!我希望我有足够的声誉来支持你的答案,并将其标记为已被接受:)我想你已经足够了,谢谢;)对不起,这个解决方案不适合我的情况。我在控制器中的$scope中没有数据-它稍后会添加到那里,所以我无法在其中进行过滤。我知道这听起来很奇怪,但那是真的。谢谢!它也可以工作,但Pankaj的答案更适合我,因为我不改变控制器。不过还是要谢谢你!
<div ng-repeat=" item in dataList"> 
   {{item}}
</div>
$scope.dataList = list.filter(function(i){
         return i.someVal==list.someVal; // condition that satisfy your req
      })[0];