English
日历组件可以查看日期,选择任意范围内的日期,打点操作。常用场景如:酒店日期预订、火车机票选择购买日期、上下班打卡等。
注意事项
为了避免错误使用,给大家带来不好的开发体验,请在使用组件前仔细阅读下面的注意事项,可以帮你避免一些错误。
date
属性传入的应该是一个 String ,如: 2019-06-27 ,而不是 new Date()insert
属性来确定当前的事件是 @change 还是 @confirm 。理应合并为一个事件,但是为了区分模式,现使用两个事件,这里需要注意在 template
中使用组件
<view>
<uni-calendar
:insert="true"
:lunar="true"
:start-date="'2019-3-2'"
:end-date="'2019-5-20'"
@change="change"
/>
</view>
需要设置 insert
为 false
<view>
<uni-calendar
ref="calendar"
:insert="false"
@confirm="confirm"
/>
<button @click="open">打开日历</button>
</view>
export default {
data() {
return {};
},
methods: {
open(){
this.$refs.calendar.open();
},
confirm(e) {
console.log(e);
}
}
};
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
date | String | - | 自定义当前时间,默认为今天 |
lunar | Boolean | false | 显示农历 |
startDate | String | - | 日期选择范围-开始日期 |
endDate | String | - | 日期选择范围-结束日期 |
range | Boolean | false | 范围选择 |
insert | Boolean | false | 插入模式,可选值,ture:插入模式;false:弹窗模式;默认为插入模式 |
clearDate | Boolean | true | 弹窗模式是否清空上次选择内容 |
selected | Array | - | 打点,期待格式[{date: '2019-06-27', info: '签到', data: { custom: '自定义信息', name: '自定义消息头',xxx:xxx... }}] |
showMonth | Boolean | true | 是否显示月份为背景 |
事件名 | 事件说明 | 返回参数 |
---|---|---|
@change | 仅插入模式时生效 日期改变时触发 | {"year":2024,"month":2,"date":24} |
@confirm | 仅弹出模式时生效 确认选择时触发 | {"year":2024,"month":2,"date":24} |
@monthSwitch | 切换月份时触发 | {"year":2024,"month":2} |
方法名 | 说明 | 返回值 |
---|---|---|
open | 弹出日历组件,insert :false 时生效 | - |
注意
示例依赖了 uni-card
uni-section
uni-scss
等多个组件,直接拷贝示例代码将无法正常运行 。
请到 组件下载页面 ,在页面右侧选择 使用 HBuilderX导入示例项目
,体验完整组件示例。
Template
Script
Style
<template>
<view class="calendar-content" v-if="showCalendar">
<text class="example-info">日历组件可以查看日期,选择任意范围内的日期,打点操作。常用场景如:酒店日期预订、火车机票选择购买日期、上下班打卡等。</text>
<uni-section title="插入模式" type="line"></uni-section>
<view>
<!-- Insert mode -->
<uni-calendar class="uni-calendar--hook" :selected="info.selected" :showMonth="false" @change="change" @monthSwitch="monthSwitch" />
</view>
<uni-section class="hideOnPc" title="弹出模式" type="line"></uni-section>
<view class="example-body hideOnPc">
<button class="calendar-button" type="button" @click="open">打开日历</button>
</view>
<uni-calendar ref="calendar" class="uni-calendar--hook" :clear-date="true" :date="info.date" :insert="info.insert" :lunar="info.lunar" :startDate="info.startDate"
:endDate="info.endDate" :range="info.range" @confirm="confirm" @close="close"/>
</view>
</template>