动态控制输入框
在开发中经常会遇到根据情况动态控制输入框的情况,以前都是使用UI框架提供的组件,这次自己动手完成了一个简易的动态输入框
先来上效果
![QQ录屏20200801214754 00_00_00-00_00_30](https://cdn.easyremember.cn/img/QQ录屏20200801214754 00_00_00-00_00_30.gif)
正片开始
加减号使用fontawesome的图标不多做赘述
先来看一下标签
<div id="upload-problem-outin" v-for="(item, index) in problem.sample" :key="index">
<div class="outin-style">
<v-textarea
v-model="item.inputSample"
:rules="rule.sampleRule"
dense
outlined
clearable
:label="'输入样例'+(index+1)"
/>
</div>
<div class="outin-style">
<v-textarea
v-model="item.outputSample"
:rules="rule.sampleRule"
dense
outlined
clearable
:label="'输出样例'+(index+1)"
/>
</div>
</div>
problem.sample
是problem对象中的样例相关部分,格式如下
sample: [{
inputSample: '',
outputSample: ''
}],
通过v-for
遍历sample数组来渲染样例组数,通过数据绑定,控制sample数组的内容来实现样例组数的渲染
再来看一下控制的方法
addSample() {
this.problem.sample.push({
inputSample: '',
outputSample: ''
})
},
subSample() {
if(this.problem.sample.length < 2) {
alert('至少保留一组')
return
}
this.problem.sample.pop()
}
触发增加事件时向原数组追加一个sample对象,触发减少事件时丢掉最后一项,智力有一个判断,即样例数不能少于1
大功告成