#javascript #angularjs #checkbox #angular-ngmodel #angularjs-ng-change
#javascript #angularjs #флажок #angular-ngmodel #angularjs-ng-изменить
Вопрос:
Я показываю бесплатные события с помощью флажка. Я передаю значение фильтру как filter:filterFreeEvent
. Это работает нормально.
Но я хочу избежать передачи значения в фильтре, скорее я хочу использовать событие изменения флажка для фильтрации.
Что-то вроде
<input type="checkbox" ng-model="showFreeEvent" ng-change($event)">
Это мой пример JsFiddle.
Кто-нибудь делал что-то подобное?. Любая помощь или предложение будут оценены.
Заранее спасибо
Ответ №1:
Вы также можете изменить переменную в событии изменения только таким образом :
<input ng-model="changeValue" ng-change="showFreeEvent = showFreeEvent== false ? true : false" value="" type="checkbox" />
Если значение showFreeEvent равно false, ng-change изменит его на true и наоборот.
Ответ №2:
Вы можете использовать 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';
});
}