#javascript #vue.js #vue-component
Вопрос:
Логические
- У меня есть флажки с входными данными в качестве метки, значения которых поступают из базы данных, поэтому текст(значение) уже выводится. (готово)
- Я хочу составить список проверенных элементов (готово)
- Я хочу, чтобы, если я изменил значение элемента, получил измененное значение, но оно все равно дает мне значение базы данных (нужна помощь)
Для лучшего понимания вот несколько скриншотов:
1
2
PS: Если я изменю ввод перед установкой флажка, мое значение автоматически перейдет к значению по умолчанию (значение БД).
Код
lt;templategt; lt;div class="input-group mb-3 active" v-for="(value, key, index) in list" :key="index"gt; lt;div class="input-group-prepend"gt; lt;div class="input-group-text"gt; lt;input type="checkbox" v-model="checkedFiles" :id="index" :value="value" aria-label="Checkbox for following text input" gt; lt;/divgt; lt;/divgt; lt;input type="text" :value="value" :id="index" class="form-control" aria-label="Text input with checkbox"gt; lt;/divgt; lt;button class="btn btn-success btn-sm" v-show="isVisible" @click="generate"gt;Generate Listlt;/buttongt; lt;/templategt; lt;scriptgt; export default { name: "directories-component", data() { return { list: [], checkedFiles: [], } }, methods: { getTheList() { //.... this.list = res.data.data; //.... }, generate(e) { e.preventDefault(); console.log(this.checkedFiles); } }, mounted() { console.log('Component mounted.') } } lt;/scriptgt;
Есть какие-нибудь предложения?
Ответ №1:
Использовать v-model
для ввода текстового поля
lt;div class="input-group mb-3 active" v-for="(val, index) in list" :key="index"gt; // removed key from iterator since list is an array lt;div class="input-group-prepend"gt; lt;div class="input-group-text"gt; lt;input type="checkbox" v-model="checkedFiles[index]" :id="index" aria-label="Checkbox for following text input" gt; // removed the :value attribute lt;/divgt; lt;/divgt; lt;input type="text" v-model="list[index]" :id="index" class="form-control" aria-label="Text input with checkbox"gt; // Change added lt;/divgt;
Комментарии:
1.Привет, спасибо за ответ, но есть 2 проблемы:
1)
value
больше не существует (в первом вводе:value="value"
)2)
, потомуv-model="val"
что я получаю'v-model' directives cannot update the iteration variable 'val' itself.eslint-plugin-vue
2. проверьте отредактированный ответ в
lt;input type="checkbox" ........
3. Также я предлагаю вам сохранить другой объект для отслеживания значения флажка, например
checkedFiles: [false, false ...]
4. спасибо, но все равно проблема
v-model="val"
остается5. хорошо, тогда попробуйте сделать это
v-model="list[index]"
. Проверьте обновленный ответ