当前位置: 首页 > 知识库问答 >
问题:

javascript - v-model怎么动态绑定Vue.data的属性?

包建义
2024-07-08
new Vue({
        el: '#app',
        data: function () {
            return {
                  normal1: 1,
                  normal2: 1,
                  normal3: 1,
                  normal4: 1,
                  // normal是不确定有几个
             }
         }
});

FXJXM的数量跟normal的数量是一样的。请问v-for渲染el-radio-group的时候,v-model怎么绑定

               <div class="body-item" v-for="(FXJXM, index) in FXJXMS" >
                    <div class="title">
                        <div class="value">{{FXJXM.FDATAVALUE}}</div>
                        <div class="desc">{{FXJXM.FInspectionStandard}}</div>
                    </div>
                    <div class="buttom">
                        <el-radio-group v-model="" class="radio-group">
                            <el-radio :label="1">正常</el-radio>
                            <el-radio :label="2">异常</el-radio>
                        </el-radio-group>
                        <el-upload class="upload" action="https://jsonplaceholder.typicode.com/posts/" :on-change="handleChange" :file-list="fileList">
                            <el-button size="small" type="primary" class="el-icon-picture">拍照</el-button>
                        </el-upload>
                    </div>
                </div>

共有2个答案

公良文彬
2024-07-08

最简单的方式可以这样:

<template>
  <div>
    <div v-for="(_, index) in 4">
      <el-divider content-position="left">Form-{{index}}</el-divider>
      <el-radio-group v-model="formData[`radio${index}`]">
        <el-radio value="1" size="large">Option 1</el-radio>
        <el-radio value="2" size="large">Option 2</el-radio>
      </el-radio-group>
      <el-input v-model="formData[`input${index}`]"></el-input>
    </div>
    <div>{{ formData }}</div>
  </div>
</template>

<script setup>
import { ref } from 'vue'

const formData = ref({})
</script>

�� 在线Demo

或者

<template>
  <div>
    <div v-for="(item, index) in formData">
      <el-divider content-position="left">Form-{{index}}</el-divider>
      <el-radio-group v-model="item.radio">
        <el-radio value="1" size="large">Option 1</el-radio>
        <el-radio value="2" size="large">Option 2</el-radio>
      </el-radio-group>
      <el-input v-model="item.input"></el-input>
    </div>
    <div>{{ formData }}</div>
  </div>
</template>

<script setup>
import { ref } from 'vue'

const formData = ref(Array.from({length:4}, () => ({ radio:"", input:"" })))
</script>

�� 在线Demo2


但是会需要你有规律的去设置属性key或者预设好初始对象数组,所以最好的方式是你做一个自定的 FormComponent,然后通过组件 v-model 来实现双向绑定。

包修贤
2024-07-08

data里这么定义:

normals: []

初始化钩子的时候push进去初始值

<div class="body-item" v-for="(FXJXM, index) in FXJXMS" :key="index">
    <!-- ... -->
    <el-radio-group v-model="normals[index]" class="radio-group">
        <el-radio :label="1">正常</el-radio>
        <el-radio :label="2">异常</el-radio>
    </el-radio-group>
    <!-- ... -->
</div>
 类似资料:
  • 示例代码如下: 我想通过key动态的绑定processInfo的属性,但是这样不生效,请问各位大佬有什么解决办法?

  • 使用 v-model 指令,可以建立数据到模板的双向绑定。本质上它是如下写法的语法糖: <input v-model="value" /> => <input value={{ self.value }} ev-input={function(e) { self.value = e.target.value; this.update(); }.bind(this)} /

  • 题目描述 关于v-model动态绑定多层级的属性名 题目来源及自己的思路 因为我想做一个自动生成表单的组件,然后绑定初始值时,希望通过对象的层级关系去绑定v-model,这样最后提交的数据,也将是带有层级的对象数据。 相关代码 你期待的结果是什么?实际看到的错误信息又是什么? 假如modelProps接收到一个值是字符串"role.id",那我希望v-model可以变成form.role.id,如

  • 本文向大家介绍vue中v-model对select的绑定操作,包括了vue中v-model对select的绑定操作的使用技巧和注意事项,需要的朋友参考一下 1、单选时 如果 v-model表达式的value初始值未能匹配任何选项,<select> 元素将被渲染为“未选中”状态。在 iOS 中,这会使用户无法选择第一个选项。因为这样的情况下,iOS 不会触发 change 事件。因此,更推荐像上面这

  • 本文向大家介绍JavaScript动态绑定详解,包括了JavaScript动态绑定详解的使用技巧和注意事项,需要的朋友参考一下 问题描述: 假设我们的网页中动态生成了一个按钮,在这个按钮生成之前我们按照一般的事件绑定方法为此按钮绑定了触发事件,但是问题是绑定的事件并没有生效(JavaScript中为元素绑定的事件失效) 分析 1.首先我们来看一下这个按钮是怎么回事: 问题中按钮有一个很关键的特性:

  • 本文向大家介绍AngularJS动态绑定ng-options的ng-model实例代码,包括了AngularJS动态绑定ng-options的ng-model实例代码的使用技巧和注意事项,需要的朋友参考一下 什么情况下会需要动态绑定 ng-model 呢?若你的数据结构长得像是下面这样: 此时你需要用 ng-repeat 将数据展开,并且将 Options 个别设置为 ng-options 的数据