iview 动态实现增减输入框

前端模版

要点说明(仅是自己在调试中总结的个人理解,非官方,认知有限)

  • v-model是用来绑定数据的,和数据结构中的字段名保持一致,否则无法取得数据
  • prop和和v-model的字段名相同,由于这里是动态生成input标签,所以prop属性也应该是动态的,因为rules是根据prop来校验的,所以rules在formItem域中单独设置
  • 如果设置了非空的规则,输入数据后检查不通过,则应该是prop和v-model设置的不同原因导致
  • 为了使两个输入框同行显示,这里每列设置单独的formItem(尝试了N中写法实现的)
<Form ref="applyInfo" :model="applyInfo" :rules="rules">
        <Card>
          <p slot="title">
            <Icon type="ios-chatboxes"></Icon>
            生产者白名单新增
          </p>
          <div id="produce">
            <FormItem>
              <Row>
                <Col span="12">
                    <Button type="primary" @click="addProduceData">添加</Button>
                </Col>
              </Row>
            </FormItem>
             <Row v-for="(item, index) in applyInfo.produceData.items" v-if="item.status" :key="index">
              <Col span="6" >
                <FormItem label="topic" :prop="'produceData.items.'+index+'.value.topic'" :label-width=110  :rules="[{required:true,message:'topic不能为空',trigger:'blur'}]">
                    <Input v-model="item.value.topic"  placeholder="输入topic名称"/>
                </FormItem>
              </Col>
              <Col span="6"  offset=1>
                <FormItem label="白名单bns" :prop="'produceData.items.'+index+'.value.bns'" :label-width=110 :rules="[{required:true,message:'topic不能为空',trigger:'blur'}]">
                    <Input v-model="item.value.bns" placeholder="输入生产者bns白名单"/>
                </FormItem>
              </Col>
              <Col span="6" offset="1">
                <Button type="error" @click="deleteRow(index)">删除</Button>  
              </Col>
              </Row>
          </div>
        </Card>
        </form>

js部分

<script>
export default {
    data() {
      return {
        index:1,
        applyInfo: {
            produceData:{
             items:[
              {
                
              }
            ]
          },
        },
},    methods: { addProduceData(){ this.index++; this.applyInfo.produceData.items.push({ value:{ topic:'', bns:'' }, index: this.index, status:1 })
}, }

效果

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值