Vuetify自定义时间选择器组件未更新模型并给出错误

时间:2019-05-09 19:08:11

标签: javascript vue.js vuejs2 vue-component vuetify.js

所以我已经坚持了一段时间。我在Vuetify中使用时间选择器创建了一个自定义组件。我在Vue.js文档中看到了自定义模型组件,您需要像这样发出输入:

    <input
      v-bind:value="value"
      v-on:input="$emit('input', $event.target.value)"
    >

但是即使添加了它,它似乎也没有更新我的模型。我收到错误TypeError:无法读取未定义的属性“值”。我尝试了$ emit('input',$ event)这似乎也不起作用。这是我的组件:

TimePicker.vue

<template>
  <div>
    <v-dialog
      ref="dialog"
      v-model="modal2"
      :return-value.sync="time"
      persistent
      full-width
      width="290px"
    >
      <template v-slot:activator="{ on }">
        <v-text-field
          v-model="time"
          :label="label"
          y
          readonly
          prepend-icon="far fa-clock"
          v-on="on"
        ></v-text-field>
      </template>
      <v-time-picker
        v-if="modal2"
        :value="time"
        @input="$emit('input', $event.target.value)"
        full-width
      >
        <v-spacer></v-spacer>
        <v-btn flat color="primary" @click="modal2 = false">Cancel</v-btn>
        <v-btn flat color="primary" @click="$refs.dialog.save(time)">OK</v-btn>
      </v-time-picker>
    </v-dialog>
  </div>
</template>

<script>
export default {
  name: 'TimePicker',
  props: ['value', 'label'],
  data() {
    return {
      time: this.value,
      modal2: false
    };
  }
};
</script>

我正在使用这样的组件:

<TimePicker v-model="startTime" label="Start Time"></TimePicker>

1 个答案:

答案 0 :(得分:1)

您可以尝试发出以下事件吗?

<input
    v-bind:value="value"
    v-on:input="onInput"
>

methods: {
  onInput(value) {
    this.$emit('input', value)
  }
}