AngularJS复选框过滤在页面加载时不进行过滤

AngularJS checkbox filtering not filtering upon page load

本文关键字:过滤 加载 复选框 AngularJS      更新时间:2023-09-26

jsfiddle此处:http://jsfiddle.net/jesperlehtinen/dx05bobb/2/


我有一个对象列表,我想在页面加载时过滤这些对象。基本上我有一个这样的复选框:

<input type="checkbox" class="form__checkbox" ng-model="filter['processed']">

以及项目列表:

<tr data-ng-repeat="card in cards.data | filter:filterByStatus">

要过滤的js在控制器中:

$scope.cards = $scope.$parent.cards;
$scope.filter = {};
$scope.filterByStatus = function(card) {
    return $scope.filter[card.status] || noFilter($scope.filter);
};
function noFilter(filterObj){
    for(var key in filterObj){
        if(filterObj[key]){
            return false;
        }
    }
    return true;
}

现在这有点奏效。当我加载页面时,复选框将被取消选中,签入将执行筛选。但是,我希望在加载时选中该复选框,并进行筛选。使用ng-checked="true"可以对其进行检查,但不执行实际的过滤。如何使用一个值(或函数)初始化复选框,使其在页面加载时被选中并执行筛选?

我意识到这很简单,只需将默认过滤器值设置为true即可初始化过滤器。所以$scope.filter = {};变成$scope.filter = {'Active':true};

使用ng init将复选框的ng模型初始化为true。