2017-08-12 777 views
2

我在项目中使用vuejs-datepicker组件,但是我需要一些自定义行为,这就是为什么我决定创建自己的datepicker并将vuejs-datepicker作为mixin注入的原因。该解决方案工作正常,但我正在寻找一种方法来调用我的覆盖内的父方法。这就是我的组件的外观现在:Vue.js mixins在重载实现中调用父方法

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)。它有可能吗?

回答

4

没有super或类似的东西。您可以做这样的事情:

setPageDate (date) { 
    // my code to set default date from the property 
    if (!date) { 
     date = this.startDate 
    } 

    Datepicker.methods.setPageDate.call(this, date) 
    } 
+0

的确,纯JS的解决方案正常工作有,但我想,也许Vue.js别的东西提供。谢谢! – ConstantineUA