Как программно получить доступ к атрибутам из элементов vuetify?

У меня есть несколько v-текстовых полей из Vuetify, которые имеют определенный фоновый цвет. Выглядит так (пытался удалить неактуальную информацию):

<v-text-field id = "someId" ref = "someRef" background-color = "someColor"
:label = "attributeName"
v-model=someValue
outline
clearable
></v-text-field>

Я хочу получить доступ к свойству background-color через js, чтобы изменить его при возникновении какого-либо события. Но я не могу понять, как получить доступ к этому значению. Я могу изменить его вручную, используя :background-color=outlineColor например

data() {
return {
outlineColor: "blue"
}
 },

а затем назначьте layoutColor = "someOtherColor" в javascript.

Но поскольку у меня есть несколько текстовых полей (созданных с помощью v-for), и я хочу изменить цвета для всех текстовых полей по отдельности, мне нужно получить доступ к конкретному текстовому полю и его цвету фона вручную, а не изменять его для всех текстовых полей. сразу.

я попробовал это с

this.$refs.someRef

но не могу найти там фоновый цвет.

Я также пытался найти его в

document.getElementById("someId").style

но единственное, что я могу найти, это backgroundColor (который не является фоновым цветом), он меняет цвет фона текста вместо цвета контура (цвет рамки вокруг поля ввода). Надеюсь, вы можете себе это представить.

Спасибо за любые подсказки заранее, Калсари

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
1 956
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не используйте запросы DOM вручную, когда вам это не нужно. Это один из тех случаев, когда вам это действительно не нужно.

Вы меняете цвет фона таким же образом, как вы назначаете разные модели для каждого из ваших текстовых полей. Вы либо создаете вычисляемое свойство, которое позволяет вам легко выбрать поле из объекта, который вы получаете в своем v-for, либо используете индекс v-for для поиска значения.

Например.

<template>
  <div>
    <template v-for = "textBoxIndex in 5">
      <v-text-field
        :background-color = "this.colors[textBoxIndex]"
        :label = "this.labels[textBoxIndex]"
        v-model=this.models[textBoxIndex]
        outline
        clearable
      ></v-text-field>
    </template>
  </div>
</template>

Если вы перебираете реальные объекты, например. с v-for = "myTextbox in myTextboxes" вы можете получить индекс с v-for = "(myTextbox, index) in myTextboxes". Вы можете использовать вычисляемое свойство для изменения объектов myTextbox, которые вы получаете в результате циклического прохождения myTextboxes, но с моделями это будет немного странно. Либо используйте ручные события @input, чтобы изменить правильное значение, используйте индекс, чтобы выбрать правильную модель, а не вычисляемое свойство, либо придумайте что-то совершенно другое.

теперь работает, спасибо. но просто потому, что мне любопытно, даже если это было бы плохой практикой здесь - каков был бы правильный способ доступа к нему через DOM?

kalsari 31.07.2019 14:30
this.$refs.someRef должен afaik быть массивом, если вы используете v-for для этого элемента. Каждый элемент в этом массиве должен быть самым верхним элементом dom, который определен в v-text-field (возможно, какой-то элемент div). Использовать его было бы сложно, потому что каждый раз, когда вы перерисовываете шаблон (вероятно, из-за того, что некоторые данные изменились), вы потенциально нарушаете фоновый цвет. В конечном итоге вы сталкиваетесь с некоторыми неприятными наблюдателями, обновляющими DOM вручную через эти ссылки.
Sumurai8 31.07.2019 22:50

Другие вопросы по теме