我在一个项目中使用了vuejs-datepicker组件,但我需要一些自定义行为,这就是为什么我决定创建自己的日期 Select 器,并将vuejs日期 Select 器作为一个混入器注入.这个解决方案工作得很好,但我正在寻找一种在重写的方法中调用父方法的方法.这就是我的组件目前的外观:

  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)
  }

Vue.js相关问答推荐

Vutify-v-工具提示-不使用键盘轻击按钮显示

如何在 vue2.7 中删除 slot-scope

VeeValidate 4 字段验证状态

Vue 脚本标签中更漂亮的 destruct 功能

在 bootstrap-vue 中渲染自定义样式

Vue-tables-2(vuex)react性不起作用

Vue:如何将 store 与组件一起使用?

VueJS:向左,元素的顶部位置?

带有 vue.js 的 img 网址

使用 aria-live 在 vue.js 中向屏幕阅读器宣布信息

如何在某些异步数据(在 Vuex 存储中)加载之前防止任何路由?

Vuetify - 如何在 v-data-table 中单击时突出显示行

Vue.js 无法切换字体真棒图标

vue js 中的 process.env.BASE_URL 是什么?

Vue.js 处理多次点击事件

安装后运行computed计算函数

错误:Node Sass 尚不支持您当前的环境:Linux 64-bit with Unsupported runtime (88)

Vue 2.0 设置路由 - 不要使用new来产生副作用

$emit 不会触发子事件

Mapbox 事件监听器