В vuetify, как проверить v-time-pickers

#javascript #vue.js #validation #vuetify.js #datetimepicker

#javascript #vue.js #проверка #vuetify.js #datetimepicker

Вопрос:

Я использую два v-time-pickers в моем проекте vuetify. Я хочу проверить свои тайм-сборщики, которые невозможно будет выбрать во втором тайм-сборщике раньше, чем в первом тайм-сборщике.

Например, когда при первом выборе времени пользователь выберет время: 9 утра, при втором выборе невозможно будет выбрать часы до 9 утра, а включенными будут часы только с 10 утра.

https://vuetifyjs.com/en/components/time-pickers/#dialog-and-menu

Код:

pickers.js

     <v-menu
        ref="menu"
        v-model="menu2"
        :close-on-content-click="false"
        :nudge-right="40"
        :return-value.sync="time"
        lazy
        transition="scale-transition"
        offset-y
        full-width
        max-width="290px"
        min-width="290px"
      >
        <template v-slot:activator="{ on }">
          <v-text-field
            v-model="time"
            label="Picker in menu"
            prepend-icon="access_time"
            readonly
            v-on="on"
          ></v-text-field>
        </template>
        <v-time-picker
          v-if="menu2"
          v-model="time"
          full-width
          @click:minute="$refs.menu.save(time)"
        ></v-time-picker>
      </v-menu>
    </v-flex>
    <v-spacer></v-spacer>
    <v-flex xs11 sm5>
      <v-dialog
        ref="dialog"
        v-model="modal2"
        :return-value.sync="time"
        persistent
        lazy
        full-width
        width="290px"
      >
        <template v-slot:activator="{ on }">
          <v-text-field
            v-model="time"
            label="Picker in dialog"
            prepend-icon="access_time"
            readonly
            v-on="on"
          ></v-text-field>
        </template>
        <v-time-picker
          v-if="modal2"
          v-model="time"
          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>

  

script.js

 <script>
  export default {
    data () {
      return {
        time: null,
        menu2: false,
        modal2: false
      }
    }
  }
</script>
content_copy



  

Ответ №1:

Вы можете использовать реквизиты разрешенных часов и минут из компонента v-time-picker:

 <v-time-picker
      v-if="modal2"
      v-model="time"
      :allowed-hours="allowedHours"
      :allowed-minutes="allowedMinutes"
      full-width
    >
  

и настройте свою логику в своем скрипте :

 methods: {
      allowedHours: v => v % 2,
      allowedMinutes: v => v >= 10 amp;amp; v <= 50
    },
  

Комментарии:

1. спасибо @jcoleau за ответ, не могли бы вы рассказать мне, как связать эти правила проверки между двумя таймерами?

2. Оба средства выбора времени v-model указывают на одни и те же переменные (время), предназначено ли это?

3. Нет, это не так. Я хочу иметь возможность выбирать разное время для сборщиков и создавать правила проверки между сборщиками

4. Затем укажите второму средству выбора вторую переменную time2 , например, а затем вы можете ссылаться на первую переменную в своей логике allowedHours: v => v >= this.time 1 примерно так