Vue.js mixins 在覆盖实现中调用父方法
Vue.js mixins call parent method in overridden implementation
我在项目中使用 vuejs-datepicker 组件,但是我需要一些自定义行为,这就是为什么我决定创建自己的日期选择器并将 vuejs-datepicker 作为混合注入的原因。该解决方案工作正常,但我正在寻找一种方法来调用我覆盖的方法中的父方法。这就是我的组件现在的样子:
import Datepicker from 'vuejs-datepicker'
export default {
props: {
/**
* My custom property startDate to open a calendar on the given date by default
*/
startDate: {
validator: function (val) {
return val === null || val instanceof Date || typeof val === 'string'
},
default: new Date()
}
},
mixins: [ Datepicker ],
methods: {
/**
* I override parent method setPageDate to read default startDate when none is specified
*/
setPageDate (date) {
// my code to set default date from the property
if (!date) {
date = this.startDate
}
// this part is the same as in the original method
this.pageDate = new Date(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes()).getTime()
}
}
}
复制一行代码没什么大不了的,但我希望以后我需要重写更多的方法。因此,我正在寻找在我的实现中调用该父方法的最佳方式,例如 this.parent(date)
或 this.super(date)
。有可能吗?
没有 super
或类似的东西。你可以做这样的事情:
setPageDate (date) {
// my code to set default date from the property
if (!date) {
date = this.startDate
}
Datepicker.methods.setPageDate.call(this, date)
}
我在项目中使用 vuejs-datepicker 组件,但是我需要一些自定义行为,这就是为什么我决定创建自己的日期选择器并将 vuejs-datepicker 作为混合注入的原因。该解决方案工作正常,但我正在寻找一种方法来调用我覆盖的方法中的父方法。这就是我的组件现在的样子:
import Datepicker from 'vuejs-datepicker'
export default {
props: {
/**
* My custom property startDate to open a calendar on the given date by default
*/
startDate: {
validator: function (val) {
return val === null || val instanceof Date || typeof val === 'string'
},
default: new Date()
}
},
mixins: [ Datepicker ],
methods: {
/**
* I override parent method setPageDate to read default startDate when none is specified
*/
setPageDate (date) {
// my code to set default date from the property
if (!date) {
date = this.startDate
}
// this part is the same as in the original method
this.pageDate = new Date(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes()).getTime()
}
}
}
复制一行代码没什么大不了的,但我希望以后我需要重写更多的方法。因此,我正在寻找在我的实现中调用该父方法的最佳方式,例如 this.parent(date)
或 this.super(date)
。有可能吗?
没有 super
或类似的东西。你可以做这样的事情:
setPageDate (date) {
// my code to set default date from the property
if (!date) {
date = this.startDate
}
Datepicker.methods.setPageDate.call(this, date)
}