Angular 用于过滤数据的复选框
Angular checkbox to filter data
我正在使用复选框显示 FreeEvents。我将值作为 filter:filterFreeEvent
传递给过滤器。这工作正常。
但我想避免在过滤器中传递值,而是想使用复选框的更改事件来过滤。
类似于
<input type="checkbox" ng-model="showFreeEvent" ng-change($event)">
这是我的 JsFiddle 示例。
有没有人做过这样的事情?。如有任何帮助或建议,我们将不胜感激。
提前致谢
您可以使用ng-change
来处理复选框更改事件。然后您可以使用 Array.prototype.filter
来过滤您的事件。过滤后的事件应存储在单独的变量中。以下是如何执行此操作的示例:
<input ng-model="showFreeEvents" type="checkbox" ng-change="onShowFreeEventsChanged()" />
<div ng-controller="myCtrl">
<div ng-repeat="event in filteredEvents">
<span>{{event.eventName}}</span></br>
<span>{{event.eventStartDateTime}}</span></br>
<span>{{event.itemCreatedDateTime}}</span></br>
</br></br>
</div>
</div>
然后在你的控制器中:
$scope.showFreeEvents = false;
$scope.events = [ /* here you should store unfiltered events */ ];
$scope.filteredEvents = filterEvents($scope.events);
// whenever showFreeEvents checkbox value changes, re-filter the events
$scope.onShowFreeEventsChanged = function() {
$scope.filteredEvents = filterEvents($scope.events);
};
function filterEvents(events) {
return events.filter(function(event) {
// Here you should write your filtering logic.
// I'd recommend to remove such comparisons, as these are prone to errors.
// \
return !$scope.showFreeEvents || event.eventName === 'Event 9';
});
}
您也可以像这样在更改事件中更改变量:
<input ng-model="changeValue" ng-change="showFreeEvent = showFreeEvent== false ? true : false" value="" type="checkbox" />
如果 showFreeEvent 为 false,ng-change 会将其更改为 true,反之亦然。
我正在使用复选框显示 FreeEvents。我将值作为 filter:filterFreeEvent
传递给过滤器。这工作正常。
但我想避免在过滤器中传递值,而是想使用复选框的更改事件来过滤。
类似于
<input type="checkbox" ng-model="showFreeEvent" ng-change($event)">
这是我的 JsFiddle 示例。
有没有人做过这样的事情?。如有任何帮助或建议,我们将不胜感激。
提前致谢
您可以使用ng-change
来处理复选框更改事件。然后您可以使用 Array.prototype.filter
来过滤您的事件。过滤后的事件应存储在单独的变量中。以下是如何执行此操作的示例:
<input ng-model="showFreeEvents" type="checkbox" ng-change="onShowFreeEventsChanged()" />
<div ng-controller="myCtrl">
<div ng-repeat="event in filteredEvents">
<span>{{event.eventName}}</span></br>
<span>{{event.eventStartDateTime}}</span></br>
<span>{{event.itemCreatedDateTime}}</span></br>
</br></br>
</div>
</div>
然后在你的控制器中:
$scope.showFreeEvents = false;
$scope.events = [ /* here you should store unfiltered events */ ];
$scope.filteredEvents = filterEvents($scope.events);
// whenever showFreeEvents checkbox value changes, re-filter the events
$scope.onShowFreeEventsChanged = function() {
$scope.filteredEvents = filterEvents($scope.events);
};
function filterEvents(events) {
return events.filter(function(event) {
// Here you should write your filtering logic.
// I'd recommend to remove such comparisons, as these are prone to errors.
// \
return !$scope.showFreeEvents || event.eventName === 'Event 9';
});
}
您也可以像这样在更改事件中更改变量:
<input ng-model="changeValue" ng-change="showFreeEvent = showFreeEvent== false ? true : false" value="" type="checkbox" />
如果 showFreeEvent 为 false,ng-change 会将其更改为 true,反之亦然。