我的角色很新,所以我的问题可能看起来简单或愚蠢,但我没有找到任何解决方案。 我的控制器中有一个集合(例如,整数集合),我想过滤它并获取条件为真的项目。
起初我试过这个:
<div>{{myCollection.find(item => item === 2)}}</div>
它并没有奏效。 然后我找到了另一种方法(我不喜欢哪一种方法,因为我总是只有一个元素可以展示而且不需要进行渲染):
<div ng-repeat="item in list | filter:{item === 2}">
<div>{{item}}</div>
</div>
它也不起作用。 这是JSBin的努力:http://jsbin.com/govovocace/1/edit?html,js,output
我的问题有可能解决吗?计算控制器中的必需字段并将其传递给视图并不适合我(不幸的是)。
答案 0 :(得分:1)
您可以在控制器中定义过滤器功能,如下所示:
$scope.filterFn = function(val){
return val === 2;
};
然后在您的模板中使用它,如下所示:
<div ng-repeat="item in list | filter:filterFn">
<div>{{item}}</div>
</div>
Tha说,这相当于刚开始过滤阵列,所以我不确定这是否符合您的需求。如果您有特定用例,则不适合在评论中告诉我。
答案 1 :(得分:1)
你有语法错误。当您直接过滤正在循环的实际对象时,不应该提及任何<div ng-repeat="profile in profiles" >
<profile name="{{profile.name}}" age="{{profile.age}}" ></profile>
</div>
内部过滤器。最后一个选项object
是因为我们要进行精确检查。
<强> HTML 强>
true
答案 2 :(得分:0)
我会做这样的事情
.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.dataList = list.filter(function(i){
return i.someVal==list.someVal; // condition that satisfy your req
})[0];