vue-property-decorator:如何修改@Emit的参数

时间:2018-08-15 11:13:43

标签: typescript vue.js

当我看到@Emit时,我在GitHub上看到了该示例。

import { Vue, Component, Emit } from 'vue-property-decorator'
   @Component
   export default class YourComponent extends Vue {
      count = 0
      @Emit()
      addToCount(n: number) {
         this.count += n
      }
   }

等同于

export default {
  data() {
    return {
      count: 0
    }
  },
  methods: {
    addToCount(n) {
      this.count += n
      this.$emit('add-to-count', n)
    }
  }
}

问题:

我想知道如何修改此参数n。 我使用return语句,但是它不起作用。

@Emit()
  startChange(num:any){
}

num参数的类型为Date。 我想将其转换为timestamp并将其传递给父组件。 你如何做到的?

1 个答案:

答案 0 :(得分:0)

您可能可以执行以下操作:

@Component
export default class YourComponent extends Vue {
    date: Date

    get timestamp() {
        if (this.date) {
            return this.date.getTime();
        }
    }

    startChange(date: Date) {
        this.date = date
    }

    @Watch('timestamp')
    @Emit('timestampChange')
    onTimestampChanged(timestamp: number) {
    }
}

或者:

@Component
export default class YourComponent extends Vue {
    timestamp: number

    startChangeByDate(date: Date) {
        this.startChangeByTimestamp(date.getTime())
    }

    @Emit('timestampChange')
    startChangeByTimestamp(timestamp: number) {
        this.timestamp= timestamp
    }
}