Передать значение выбора диапазона дат в фильтр

Я использую daterangepicker для выбора даты начала и окончания.

Это мой пример JsFiddle

Дата работает, и я могу выбрать дату начала и окончания.

<input type = "text" class = "date" ng-model = "selectDate" />

Но как передать в фильтры модель selectDate, чтобы отбирались только те события, где selectDate будет соответствовать eventStartDateTime

$scope.data=[{'eventStartDateTime': 'Tue, 02 April 2019, 12:30 PM','eventName': 'ANew Event','itemCreatedDateTime': '3/04/2019 5:17:10 AM',},{'eventStartDateTime': 'Tue, 02 April 2019, 02:43 PM','eventName': 'AFeatured Event 3','itemCreatedDateTime': '2/04/2019 1:54:10 AM',},{'eventStartDateTime': 'Tue, 02 April 2019, 12:30 PM','eventName': 'Event 9','itemCreatedDateTime': '2/04/2019 1:29:56 AM',},{'eventStartDateTime': 'Thu, 28 March 2019, 04:30 AM','eventName': 'Featured Event 2','itemCreatedDateTime': '28/03/2019 4:59:13 AM',},{'eventStartDateTime': 'Tue, 02 April 2019, 12:55 PM','eventName': 'Featured Event 4','itemCreatedDateTime': '28/03/2019 4:58:54 AM',},{'eventStartDateTime': 'Thu, 28 March 2019, 04:30 AM','eventName': 'Avent 5','itemCreatedDateTime': '28/03/2019 1:29:06 AM',},{'eventStartDateTime': 'Thu, 28 March 2019, 05:30 AM','eventName': 'Event 4','itemCreatedDateTime': '28/03/2019 1:29:00 AM',},{'eventStartDateTime': 'Fri, 29 March 2019, 04:00 AM','eventName': 'Event 3','itemCreatedDateTime': '28/03/2019 1:28:54 AM',},{'eventStartDateTime': 'Thu, 21 March 2019, 04:30 AM','eventName': 'Event 2','itemCreatedDateTime': '28/03/2019 1:28:41 AM',},{'eventStartDateTime': 'Thu, 28 March 2019, 04:00 AM','eventName': 'Event 1','itemCreatedDateTime': '28/03/2019 1:28:36 AM',}];

Любая помощь или предложение будут оценены.

заранее спасибо

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
544
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

добавить ng-onchange = "filterfunction(dateModelInput)"

это обнаружит изменение в вашем html, вызовите функцию фильтра. это обновит ваш DOM.

убедитесь, что вы включили фильтр в html, который нуждается в фильтрации.

<div>{{ctrl.data | filterResult }}</div>

Можете ли вы привести пример? Извините, я новичок в angular

Owais Ahmed 09.04.2019 15:12

я дал вам варианты использования кода выше. вам просто нужно изменить «filterfunction» на имя вашей функции. и любые данные, которые вы фильтруете, вам нужно добавить к ним фильтр, я внесу изменения в plunkr и верну его, если у меня будет время сегодня.

Tom Edwards 09.04.2019 15:14

каков ожидаемый результат для этого? мне кажется, что он отфильтровывает одно событие

Tom Edwards 09.04.2019 15:31
Ответ принят как подходящий

Вы можете использовать директива Angular.js для daterangepicker

Установите его, затем добавьте daterangepicker к angular.module и инициализируйте свои переменные:

var app = angular.module("myApp", ["daterangepicker"]);
app.controller("myCtrl", function($scope, $window) {
  ...
  $scope.showFreeEvent = false;
  $scope.selectDate = { date: { startDate: null, endDate: null } };
  ...

Затем в вашем HTML добавьте атрибут date-range-picker к любому входу и привяжите его к модели:

<input
        date-range-picker
        class = "form-control date-picker"
        type = "text"
        ng-model = "selectDate.date"
      />

А для фильтрации ваших событий вы можете использовать moment().isBefore() и moment().isAfter():

if (!$scope.showFreeEvent) {
      return true;
    }

    if (
      $scope.selectDate.date.startDate.isAfter(el.eventStartDateTime) ||
      $scope.selectDate.date.endDate.isBefore(el.eventStartDateTime)
    ) {
      return false;
    }

Демо: https://codesandbox.io/s/l29yqywx9m

Другие вопросы по теме