Установите значение для одного из реквизитов

#vue.js #vuetify.js

Вопрос:

Я использую Vue2 и. Vuetify У меня есть компонент селектора, который extend соответствует стандарту VAutocomplete . Согласно логике компонента, мне нужно отображать loading при загрузке данные. Если вы сделаете отдельный компонент, это решится просто:

 <template><v-autocomplete :loading="loading" /></template>
<script>
export default {
  name: 'CustomSelect',
  data() { return { loading: false } },
  methods: {
    methodWithLoading() {
      this.loading = true
      // do code...
      this.loading = false
    },
  },
}
</script>
 

В случае расширения код будет выглядеть следующим образом:

 <script>
import VAutocomplete from 'vuetify/lib/components/VAutocomplete'
export default VAutocomplete.extend({
  name: 'CustomSelect',
  methods: {
    methodWithLoading() {
      this.loading = true
      // do code...
      this.loading = false
    },
  },
})
</script>
 

loading работает, потому что loadable глубоко внутри VAutocomplete prop loading есть смесь, в которой есть «а». Это prop отвечает за полосу загрузки, локальная переменная или метод не используются, т. е. опора напрямую влияет на полосу загрузки.

И здесь начинается проблема: я не могу просто изменить this.loading внутри компонента, потому что вы не можете поместить значения props напрямую.

Как мне установить значение this.loading (мне все равно, может ли родительский компонент перезаписать его)?

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

1. Похоже, это обычная проблема двусторонней привязки. Используйте событие для связи с родителем вместо loading прямой настройки. Если это не соответствует делу, то подумайте о том, чтобы объяснить это дальше.

2. @EstusFlask Моя проблема не связана с родителем. Мне нужно установить loading внутри этого компонента отображение панели загрузки, и родитель не влияет на это.

3. Ты пробовал data() { return { loading: false } } ? Я не проверял, как VAutocomplete работает внутренне, но загрузка данных, вероятно, должна переопределять реквизит с тем же именем.

4. Это приводит к ошибке, из-за которой данное имя перезаписывает имя props .

5. В общем, мой вопрос довольно общий — могу ли я (и как, если да, то) переписать prop компонент внутри этого компонента?