如何捕捉事件是 vue.js v-calendar
How to catch events is vue.js v-calendar
我正在使用 vuejs v-calender 插件,所以我有一个日期范围选择器。一切都很好,我可以 select 约会,但仅此而已。
我想做的只是注销 selected 日期,以便稍后我可以将它们存储在数据库中、更新表单等,但我不知道如何实现这一点。我在文档中找不到有关如何执行此操作的任何示例。
有谁知道如何获取 selected 日期范围的开始日期和结束日期?
这是我目前所知道的...
<template>
<v-date-picker mode='range' v-model='range' is-inline :columns="$screens({ default: 1, lg: 2 })" />
</template>
<script>
import { DatePicker } from 'v-calendar'
export default {
name: 'Booking',
components: {
DatePicker
},
data() {
return {
range: {
start: new Date(),
end: null
}
}
},
mounted() {
this.$root.$on('input', (value) => {
console.log('dxggdfg');
});
}
}
</script>
添加输入事件
<v-date-picker mode='range' v-model='range' @input="onDateRangeChange" is-inline :columns="$screens({ default: 1, lg: 2 })" />
{
...
methods: {
onDateRangeChange() {
console.log(this.range)
}
},
mounted() {
this.$root.$on('input', (value) => {
console.log('dxggdfg');
});
}
}
或者您可以使用 watch
,如果您还从外部更新您的 v-model,则效果很好:
{
...
watch: {
range: {
handler: function () {
console.log(this.range)
},
deep: true
}
},
mounted() {
this.$root.$on('input', (value) => {
console.log('dxggdfg');
});
}
}
对我来说,它适用于 @input
例如:
<date-picker mode='range' v-model='range' is-range class="m-auto" @input="changeDate"/>
然后,在方法中,我只有一个名为“changeDate”的方法。一旦在日期范围内选择了第二个日期,就会调用此方法。
computed: {
dateRange: {
set (val) {
// action after date change here
},
get () {
let range = {
start: new Date(moment().subtract(7, 'day').format('YYYY-MM-DD')),
end: new Date(moment().format('YYYY-MM-DD'))
}
// action after receives date from props
return range
}
}
}
<v-date-picker
:columns="$screens({ default: 1, lg: 2 })"
is-range
:value="dateRange"
:attributes="attrs"
:max-date='new Date()'
v-model="dateRange"
/>
你可以通过计算得到结果,我在 data() 上浪费了很多时间,但它对我不起作用
偶然发现了这个 - 希望对其他人有所帮助。
当只使用单个日期时,您可以这样设置。
<v-date-picker
is-expanded
:columns="$screens({ default: 1, lg: 2 })"
:attributes="calendar.attributes"
v-model="calendar.today"
@dayclick="changeDate"
/>
...
methods: {
changeDate() {
console.log('changeDate called');
// emit your own event or ??
},
}
...
我正在使用 vuejs v-calender 插件,所以我有一个日期范围选择器。一切都很好,我可以 select 约会,但仅此而已。
我想做的只是注销 selected 日期,以便稍后我可以将它们存储在数据库中、更新表单等,但我不知道如何实现这一点。我在文档中找不到有关如何执行此操作的任何示例。
有谁知道如何获取 selected 日期范围的开始日期和结束日期?
这是我目前所知道的...
<template>
<v-date-picker mode='range' v-model='range' is-inline :columns="$screens({ default: 1, lg: 2 })" />
</template>
<script>
import { DatePicker } from 'v-calendar'
export default {
name: 'Booking',
components: {
DatePicker
},
data() {
return {
range: {
start: new Date(),
end: null
}
}
},
mounted() {
this.$root.$on('input', (value) => {
console.log('dxggdfg');
});
}
}
</script>
添加输入事件
<v-date-picker mode='range' v-model='range' @input="onDateRangeChange" is-inline :columns="$screens({ default: 1, lg: 2 })" />
{
...
methods: {
onDateRangeChange() {
console.log(this.range)
}
},
mounted() {
this.$root.$on('input', (value) => {
console.log('dxggdfg');
});
}
}
或者您可以使用 watch
,如果您还从外部更新您的 v-model,则效果很好:
{
...
watch: {
range: {
handler: function () {
console.log(this.range)
},
deep: true
}
},
mounted() {
this.$root.$on('input', (value) => {
console.log('dxggdfg');
});
}
}
对我来说,它适用于 @input
例如:
<date-picker mode='range' v-model='range' is-range class="m-auto" @input="changeDate"/>
然后,在方法中,我只有一个名为“changeDate”的方法。一旦在日期范围内选择了第二个日期,就会调用此方法。
computed: {
dateRange: {
set (val) {
// action after date change here
},
get () {
let range = {
start: new Date(moment().subtract(7, 'day').format('YYYY-MM-DD')),
end: new Date(moment().format('YYYY-MM-DD'))
}
// action after receives date from props
return range
}
}
}
<v-date-picker
:columns="$screens({ default: 1, lg: 2 })"
is-range
:value="dateRange"
:attributes="attrs"
:max-date='new Date()'
v-model="dateRange"
/>
你可以通过计算得到结果,我在 data() 上浪费了很多时间,但它对我不起作用
偶然发现了这个 - 希望对其他人有所帮助。 当只使用单个日期时,您可以这样设置。
<v-date-picker
is-expanded
:columns="$screens({ default: 1, lg: 2 })"
:attributes="calendar.attributes"
v-model="calendar.today"
@dayclick="changeDate"
/>
...
methods: {
changeDate() {
console.log('changeDate called');
// emit your own event or ??
},
}
...