我有一个由 vue-flatpickr-component 组成的 vue 日期组件。当然,当我将配置选项作为道具传递时,它们会按预期工作,但是,如果想要更改应该可能的配置选项之一,它不会向下传播。我不是 Vue 大师,任何建议都会有所帮助。
我在 Laravel 应用程序中使用页面组件,它不应该是相关的,但是,以防万一有人用 vuex 或 vue-router 回答,这些在这里不起作用。
以下是 page.vue 中的表单元素:
<material-select
name="specialist"
label="Specialist"
default-text="CHOOSE HOMEVISIT SPECIALIST"
:options="staffMembers"
v-model="form.specialist"
:validation-error="form.errors.first('specialist')"
class="mb-4"
></material-select>
<div class="w-1/2">
<material-date
label="Appointment date"
name="appointment_date"
v-model="form.appointment_date"
:validation-error="form.errors.first('appointment_date')"
class="mb-4"
:external-options="{
enable: this.appointmentDates,
}"
></material-date>
<pre>{{ this.appointmentDates }}</pre>
</div>
这是驱动配置更改的计算属性:
computed: {
appointmentDates(){
if(this.form.specialist !== null){
return this.availableDates[this.form.specialist - 1]
}
return []
},
When a different home visit specialist is chosen, it will update with Vue's reactivity.
我有一个计算属性更改配置选项。以下是 MaterialDate.vue 文件中的道具数据和相关计算属性:
import flatPickr from 'vue-flatpickr-component';
import 'flatpickr/dist/flatpickr.css';
export default {
components: {
flatPickr
},
props: {
value: String,
label: String,
validationError: String,
name: {required:true},
optional: {
default: false
},
externalOptions: {}
},
data() {
return {
defaults: {disableMobile: true,},
options: this.externalOptions
}
},
computed: {
config(){
return Object.assign({}, this.defaults, this.options)
},
这当然永远不会更新启用的日期选项,因为道具是不可变的,我需要访问set(option, value)
由 vue-flatpickr-component 包装的部分。但是,我的 Vue kungfu 还不够强大,无法对它进行源代码潜水以查看我如何访问它并以编程方式调用set('enabled', [new dates])
.