Динамически передать ключ и значение всего объекта как HTML атрибуты в шаблоне VUE - PullRequest
0 голосов
/ 25 января 2020

Я хочу передать объект типа myObj = {id: "personal_info", name:"info", required: true, className: "form-control"} либо элементу ввода, текстовой области, либо элементу выбора. Цель состоит в том, чтобы свойства объекта были атрибутами элемента HTML.

Что-то вроде:

<input v-bind="myObj" >

Я бы хотел, чтобы это сгенерировалось:

<input id="personal_info" name="info" required="true" class="form-control">

Я создаю шаблон FormBuilder, чтобы легче было создавать формы. Поэтому моя цель - оптимизировать этот процесс. Я делаю вот что:

        <input v-if="element == 'input'"
            :id="cssId" :class="className" :type="type">

        <textarea v-if="element == 'textarea'"
        :id="cssId" :class="className" :rows="rows" :cols="cols">

        </textarea>

        <select v-if="element == 'select'" :id="cssId" :class="className">

            <option v-for="(option, index) in options" :key="index" :value="option.value">
                {{ option.text }}
            </option>
        </select>

Однако есть много атрибутов, которые могут не использоваться. Может быть много свойств, и они могут быть разными (например, элемент ввода может иметь disabled или readonly, текстовое поле может иметь rows и cols).

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

1 Ответ

0 голосов
/ 26 января 2020

Вы ответили на свой вопрос. v-bind будет подходящим способом связать несколько атрибутов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...