【问题标题】:set & get values for dynamically generated select input为动态生成的选择输入设置和获取值
【发布时间】:2020-10-05 15:56:07
【问题描述】:

我使用下面的代码生成了几个select fields

<tr v-for="(dataPreview,index) in dataPreviewList" :key="dataPreview.headers">
    <td>{{ dataPreview.headers }}</td>
    <td>{{ dataPreview.sample }}</td>
    <td>
        <b-select :name="'selectedField' + index" v-model="systemField[index]">
            <option value="1">First Name</option>
            <option value="2">Last Name</option>
            <option value="3">Matrix Number</option>
            <option value="4">Father's Name</option>
            <option value="5">Father's ID</option>
            <option value="6">Mother's Name</option>
            <option value="7">Mother's ID</option>
            <option value="8">Contact Number</option>
        </b-select>
    </td>
</tr>

问题是我不确定如何设置字段的默认值(初始选择),然后如何获取所有b-select 的选定值。我需要的是,例如如果dataPreviewList长度为7,第一个b-select应该有&lt;option value="1"&gt;First Name&lt;/option&gt;作为默认值,第二个b-select应该有&lt;option value="2"&gt;Last Name&lt;/option&gt;作为默认值等等。

在我的js中;

data() {
    return {
        dataPreviewList: [],
        selectedField: [],
        systemField: []
    }
}

【问题讨论】:

    标签: vue.js


    【解决方案1】:

    在您的挂载方法中,您可以循环您的列表并应用该逻辑。在这种情况下,您将其绑定到该索引的 systemField 并将值设置为 index+1(因为它是从 0 开始的)以实现该结果。

    mounted() {
      this.dataPreviewList.forEach((dataPreview, index) => {
        this.$set(this.systemField, index, index+1)
      })
    }
    

    【讨论】:

    • 我添加了您的代码,但它似乎没有做任何事情;我已经添加了如何在数据返回中声明我的变量,如果这可能是原因
    • @imin dataPreviewList 是否由 axios 请求填充?如果是这样,我上面的代码必须在 axios 调用已水合dataPreviewList 变量 之后运行
    • this.dataPreviewList.forEach((dataPreview, index) =&gt; { console.log(this.systemField[index]) })
    猜你喜欢
    • 2020-08-17
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    相关资源
    最近更新 更多