开发者问题收集

@onmouseup 未在 vuejs 2 上触发

2017-02-28
6546

完整代码: https://github.com/kenpeter/test_vue_simple_audio_1

我将 @onmouseup 附加到 input range 。当我拖动滑块时, progressChange 似乎没有被调用。

<input 
  type="range"
  :min="0" 
  :step="1"
  v-model="current"

  :value="current"
  :max="duration"
  @onmouseup="progressChange()"
  />

以下是 methods

methods: {
    timeChange: function () {
      this.current = this.$refs.player.currentTime;
    },
    getDuration: function () {
      this.duration = this.$refs.player.duration;
    },
    toggleStatus: function () {
      var player = this.$refs.player;
      this.isPause ? player.play() : player.pause();
      this.isPause = !this.isPause;
    },
    next: function () {
      if (this.audioIndex == this.songs.length - 1) {
        if (this.repeat) {
          this.audioIndex = 0;
        }
      } else {
        this.audioIndex++;
      }
    },
    prev: function () {
      if (this.audioIndex == 0) {
        if (this.repeat) {
          this.audioIndex = this.songs.length - 1;
        }
      } else {
        this.audioIndex--;
      }
    },
    progressChange() {
      console.log("progress change");
    },
1个回答

回答这个问题是为了给将来寻找类似问题的人提供参考:

问题是调用事件时的名称错误,因为 VueJS 使用 @even 语法,其中 @ 替换 'on',因此您必须使用:

  • @mouseup
  • @click
  • @keyup:keyname
  • @input
  • @customEventEmitedByComponent
Marek Urbanowicz
2017-02-28