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