【问题标题】:How to ++ radio buttons with v-for in VueJS on the fly如何在 VueJS 中使用 v-for ++ 单选按钮
【发布时间】:2019-07-11 20:15:27
【问题描述】:

朋友们,我有一个可以重复多次的表格,如上所示(只是一小部分,并不需要所有行):

<div class="col-sm-2">
    <div class="form-group">
        <label for="produtividade">Produtividade p/ha</label>

        <input
            type="text"
            class="form-control"
            name="previsaoReceitas[][produtividade]"
            v-model="previsaoReceita.produtividade"
            class="form-group"
            @keydown="$event.keyCode === 13 ? $event.preventDefault() : false"
        >
    </div>

    <div class="form-check form-check-inline">
        <input
            class="form-check-input"
            type="radio"
            name="previsaoReceitas[][embalagem]"
            v-model="previsaoReceita.embalagem"
            value="sc"
        >

        <label class="form-check-label" for="produtividade1">sc</label>
    </div>

    <div class="form-check form-check-inline">
        <input
            class="form-check-input"
            type="radio"
            name="previsaoReceitas[][embalagem]"
            v-model="previsaoReceita.embalagem"
            value="cx"
        >

        <label class="form-check-label" for="produtividade2">cx</label>
    </div>

    <div class="form-check form-check-inline">
        <input
            class="form-check-input"
            type="radio" name="previsaoReceitas[][embalagem]"
            v-model="previsaoReceita.embalagem"
            value="ton"
        >

        <label class="form-check-label" for="produtividade3">ton</label>
    </div>
</div>

有这个“+”按钮调用一个方法来复制这一行,推送到一个数组,这样我就可以得到 v-for:

<div v-for="(previsaoReceita, index) in previsaoReceitas">

问题是当行被复制时,单选按钮获得相同的名称,然后新的使旧的无效,当然。

如何让 Vue 动态命名新的单选按钮?

我希望我说清楚了。提前致谢!

亲爱的@Rich,现在我得到了一个奇怪的结果,看看这个:

关于 Vue 数据部分:

previsaoReceita: {
                anoSafra: '',
                cultura: '',
                areaCultivada: '',
                produtividade: '',
                embalagem: '',
                preco: '',
                embalagem2: '',
                valor_previsto: ''
            },

Vue 检查器显示数组是正确的:

回报:

 if ($request->previsaoReceitas != '') {
            $j = json_encode($request->previsaoReceitas);
            $im = str_replace('},{', ',', $j);
            $i = str_replace('","anoSafra', '"}, {"anoSafra', $im);
            return $i;
            $previsaoReceitas = new Producao();
            $previsaoReceitas->consorciado_id = $consorciado->id;
            $previsaoReceitas->producaos = $i;
            $previsaoReceitas->save();
        }

在浏览器上:

[{"anoSafra":"2016","embalagem":"cx","embalagem2":"sc","cultura":"batata","embalagem":"ton","embalagem2":"sc","areaCultivada":"100","produtividade":"100","embalagem":"sc","preco":"0.25","embalagem2":"sc"}, {"anoSafra":"2017","cultura":"batata","areaCultivada":"420","produtividade":"550"}, {"anoSafra":"2018","cultura":"batata","areaCultivada":"500","produtividade":"550"}]

您是否注意到只有第一个数组具有 'embalagem' 和 'embalagem2' 值?

这是为什么呢?我做错了什么? 提前致谢!

【问题讨论】:

    标签: vue.js radio-button v-for


    【解决方案1】:

    您需要将索引添加到模板中的 v-model、id 和 for 中,以确保它们都是唯一的:

    <div
        v-for="(previsaoReceita, index) in previsaoReceitas"
        class="form-check form-check-inline"
    >
        <input
            :id="`produtividade-1-${index}`"
            class="form-check-input"
            type="radio"
            :name="`previsaoReceitas[${index}][embalagem]`"
            v-model="previsaoReceita[index].embalagem"
            value="sc"
        >
    
        <label
            :for="`produtividade-1-${index}`"
            class="form-check-label"
        >sc</label>
    </div>
    

    确保您的 previsaoReceitas 数组能够处理索引,我不确定您的数据或添加方法是什么样的,但应该是这样的:

    data() {
        return {
            previsaoReceitas: [
                {
                    embalagem: null
                }
            ]
        };
    },
    
    methods: {
        add() {
            this.previsaoReceitas.push({
                embalagem: null
            });
        }
    }
    

    【讨论】:

    • 请再看看我的问题!
    • 我认为您在构建对象时出错,我已经为您创建了一个有效的codepen as an example
    • 好的,我会深入研究以更好地学习它。非常感谢@Rich!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 2020-09-08
    • 2019-08-19
    相关资源
    最近更新 更多