如何在第一次点击时过滤,然后在第二次点击时重置过滤器?我想首先显示包含图像的项目,然后在第二次单击时重置过滤器。 请检查[小提琴] [1] [1]:http://jsfiddle.net/6L7xn/9/ 感谢
<button class="btn btn-primary" ng-click="myFilter = {'largeImage': {'hasImage': 'Yes'}}">Images</button
答案 0 :(得分:1)
我已经分叉了你的jsfiddle: http://jsfiddle.net/jkrielaars/n5q9xeej/2/
我必须改变一些事情:
:true
作为第三个参数传递给过滤器控制器:
$scope.myFilter = {};
$scope.toggleFilter = function(){
if(angular.equals({}, $scope.myFilter)){
$scope.myFilter = {'largeImage': {'hasImage': 'yes'}};
}else{
$scope.myFilter = {};
}
}
观点:
<button class="btn btn-primary" ng-click="toggleFilter()">Images</button>
<div class="item-sc" data-ng-repeat="d in things | filter:myFilter:true">
答案 1 :(得分:0)
足够简单,可以添加一个函数来设置控制器中的范围变量,您可以通过ng-click调用该变量。然后将过滤器设置为等于scope变量中的值。像这样:
添加到控制器
min_lon
<强> HTML 强>
$scope.myFilter = 'no' // or whatever you want to default to;
$scope.setMyFilter = function(){
$scope.myFilter = $scope.myFilter === 'no' ? 'yes' : 'no';
};