【发布时间】:2014-05-05 10:19:13
【问题描述】:
我是 angular 新手。我设法使用 angular 进行过滤,它工作正常,但现在我想将过滤器移到控制器之外,这对我来说非常具有挑战性。
这是我的 html 页面:
<div >
<input type="checkbox" ng-click="itemType('CAR')"/> CAR
<input type="checkbox" ng-click="itemType('BIKE')"/> BIKE
<input type="checkbox" ng-click="itemType('CYCLE')"/> CYCLE
</div>
<table>
<tbody>
<tr ng-repeat="item in items | filter:filterItem">
<td >{{item.name}}</td>
<td >{{item.type}}</td>
</tr>
</tbody>
</table>
和控制器:
app.controller('MainCtrl', function($scope) {
$scope.items = [
{name: 'bmw', type:'CAR' },
{name: 'ducati',type:'BIKE'},
{name: 'airbas',type:'CYCLE' }
];
$scope.typeArray = [];
$scope.itemType = function(type) {
var i = $.inArray(type, $scope.typeArray);
if (i > -1) {
$scope.typeArray.splice(i, 1);
} else {
$scope.typeArray.push(type);
}
}
$scope.filterItem = function(item) {
if ($scope.typeArray.length > 0) {
if ($.inArray(item.type, $scope.typeArray) < 0){
return false;
}
}
return item;
}
});
如何将过滤从控制器移动到 app.filter()。 谢谢。
【问题讨论】:
标签: angularjs checkbox filter controller