1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xrp0929-wx_calendar

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Календарь小程序

Анализ подхода

Чтобы реализовать календарь, нам потребуются следующие значения:

  • Количество дней в месяце

  • День недели первого дня месяца

По общим знаниям мы знаем, что месяц может содержать от 28 до 31 дня. В календаре каждая строка состоит из 7 клеток, поэтому всего будет 5 строк, но если первый день месяца выпадает на субботу, то потребуется 6 строк.

В小程序 нет понятия DOM-операций, поэтому невозможно динамически добавлять пустые клетки перед первым днем месяца. Можно использовать цикл для добавления пустых клеток перед началом месяца, подробнее см. файл wxml.

Введение шаблона календаря

Шаблон календаря поддерживает горизонтальное свайпование;

Предоставляет метод перехода к сегодняшнему дню jumpToToday;

Устанавливает метки задач для конкретной даты setTodoLabels;

Удаляет метки задач для конкретной даты deleteTodoLabels;

Очищает все метки задач для всех дат clearTodoLabels;

Шаблон доступен через template введение шаблона1. Введение wxml и wxss

<!-- пример. wxml -->
<import src="./template/calendar/index.wxml"/>
<view class="calendar-wrap">
    <template is="calendar" data="{{calendar}}"/>
</view>
/* пример. wxss */
@import './template/calendar/index.wxss';
  1. Инициализация компонента календаря
import initCalendar, { getSelectedDay, jumpToToday, setTodoLabels, deleteTodoLabels, clearTodoLabels } from './template/calendar/index';

const conf = {
  onShow: function () {
    initCalendar({
      // multi: true, // Включить множественный выбор
      // disablePastDay: true, // Отключить выбор прошедших дат
      /**
       * Обработчик события после нажатия на день
       * @param {object} currentSelect - Выбранный день
       * @param {array} allSelectedDays - Все выбранные дни (только если multi=true)
       */
      afterTapDay: (currentSelect, allSelectedDays) => {
        console.log('================================');
        console.log('Выбранный день:', currentSelect);
        console.log('Есть ли отметка на выбранном дне?:', currentSelect.hasTodo || false);
        if (allSelectedDays) console.log('Все выбранные дни:', allSelectedDays);
        console.log('Метод getSelectedDay:', getSelectedDay());
      },
      /**
       * Обработчик события при клике на день (полностью заменяет событие клика)
       * @param {object} currentSelect - Выбранный день
       * @param {object} event - Объект события клика
       */
      // onTapDay(currentSelect, event) {
      //   console.log(currentSelect);
      //   console.log(event);
      // },
      /**
       * Обработчик события после первой отрисовки календаря
       */
      afterCalendarRender() {
        setTodoLabels({
          pos: 'bottom',
          dotColor: '#FF0000',
          days: [
            {
              year: 2018,
              month: 5,
              day: 12,
            },
            {
              year: 2018,
              month: 5,
              day: 15,
            }
          ],
        });
      },
    });
  },
};
``````md
// clearTodoLabels();
},
/**
* Переход к сегодняшнему дню
*/
jump() {
jumpToToday();
},
};
Page(conf);

Шаблон календаря выбора даты

Календарь поддерживает жесты левой и правой прокрутки; ```> Предоставляет метод перехода к сегодняшнему дню jumpToToday;

В этом шаблоне есть поле ввода input, которое не влияет на использование шаблона и может быть скрыто при необходимости;

Компонент выбора даты input позволяет ввести конкретную дату;

  1. Включение wxml и wxss
// example.wxml
<import src="../../template/datepicker/index.wxml"/>

<view class="datepicker-box">
	<template is="datepicker" data="{{...datepicker}}" />
</view>
/* example.wxss */
@import '../../template/datepicker/index.wxss';
```2. Инициализация компонента выбора даты
```js
import initDatepicker, { getSelectedDay, jumpToToday } from '../../template/datepicker/index';
const conf = {
  onShow: function() {
    initDatepicker({
      // disablePastDay: true, // Отключает возможность выбора прошедших дат
      // showInput: false, // По умолчанию true
      // placeholder: 'Выберите дату', // Подсказка поля ввода
      // type: 'normal', // [normal - обычный режим выбора одной даты (по умолчанию), timearea - режим выбора временного интервала (в разработке), multiSelect - режим множественного выбора (в разработке)]
      /**
       * Выполняется после выбора даты
       * @param { object } currentSelect Выбранная дата
       */
      afterTapDay: (currentSelect) => {
        console.log('Выбранная дата', currentSelect);
        console.log('Метод получения выбранной даты', getSelectedDay());
      },
      /**
       * Обрабатывает событие нажатия на дату
       * @param { object } currentSelect Выбранная дата
       * @param {object} event Событие нажатия на дату
       */
      onTapDay(currentSelect, event) {
        console.log(currentSelect);
        console.log(event);
      },
    });
  },
  /**
   * Переход к сегодняшнему дню
   */
  jump() {
    jumpToToday();
  }
};
Page(conf);

Эффектный вид компонента выбора даты

Компонент выбора даты#### Эффектный вид календаря Эффектный вид календаря

Приветствуем ваши отзывы...


Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
JavaScript
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/xrp0929-wx_calendar.git
git@api.gitlife.ru:oschina-mirror/xrp0929-wx_calendar.git
oschina-mirror
xrp0929-wx_calendar
xrp0929-wx_calendar
develop