动态增减表单项,如何定位,根据一个select控制另外一个select?
已解决
,使用下面的 watch
监听就可以。
vue + iview
表单通过 添加
删除
按钮动态增减表单条数
,增减部分是 model.projects
。循环如下结构数据展示。
功能要求:当 类型
选择 功能
时,禁用 规格
下拉选项,即增加disabled="true"
属性。
如何实现?
1.页面结构片断:
<z-form ref="modelDialog"
:model="model"
:label-width="100"
label-position="left"
>
<z-row>
<z-col span="8">
<z-form-item label="模块名称">
<z-input
v-model="model.partName"
:maxlength="40"
placeholder="请输入..."
clearable
/>
</z-form-item>
</z-col>
</z-row>
<div v-for="(item, index) in model.projects" :key="index">
<z-edit-panel class="m-t-15 p-t-20">
<z-row>
<z-col span="8">
<z-form-item label="类型">
<z-select
v-model="item.type"
placeholder="请选择..."
@on-change="handleChange"
>
<z-option
v-for="item in typeName"
:value="item.value"
:key="item.value"
>{{ item.label }}</z-option
>
</z-select>
</z-form-item>
</z-col>
</z-row>
<z-row>
<z-col span="8">
<z-form-item label="名称">
<z-input
v-model="item.name"
:maxlength="40"
placeholder="请输入..."
clearable
/>
</z-form-item>
</z-col>
</z-row>
<z-row>
<z-col span="9">
<z-form-item label="等级">
<z-select v-model="item.level" placeholder="请选择...">
<z-option
v-for="item in projectLevelOption"
:value="item.value"
:key="item.value"
>{{ item.label }}</z-option
>
</z-select>
</z-form-item>
</z-col>
<z-col span="8">
<z-form-item label="规格">
<z-select
v-model="item.standard"
placeholder="请选择..."
>
<z-option
v-for="item in checkFunction"
:value="item.value"
:key="item.value"
>{{ item.label }}</z-option
>
</z-select>
</z-form-item>
</z-col>
</z-row>
<z-row>
<z-col span="10">
<z-form-item label="标准">
<z-input
v-model="item.projectStandard"
type="textarea"
:autosize="{ minRows: 3, maxRows: 5 }"
placeholder="Please enter the detailed address"
class="standard-textarea"
></z-input>
</z-form-item>
</z-col>
<z-col span="4">
<z-form-item
class="standardTextarea"
v-if="index === model.projects.length - 1"
>
<z-button
type="primary"
size="small"
icon="plus-round"
@click="addItem"
>添加</z-button
>
</z-form-item>
<z-form-item
class="standardTextarea"
v-if="index === model.projects.length - 1"
>
<z-button
type="error"
size="small"
icon="minus-round"
@click="delItem"
>删除</z-button
>
</z-form-item>
</z-col>
</z-row>
</z-edit-panel>
</div>
</z-form>
2.数据片断:
model: { typeId: '',
partId: '',
partName: '模块名称',
projects: [
{
name: '名称',
type: '类型',
standard: '规格',
level: '等级',
}
]
},
- 新增方法:
addItem() { this.model.projects.push({
name: '',
type: '',
standard: '',
level: '',
})
},
delItem() {
this.model.projects.pop()
}
=================================
在watch
监听里,用最简单的for
循环,监听某一组表单有了变化,但如何将变化返回到指定的表单项呢?
model: { handler(newName, oldName) {
for (let i = 0; i < this.model.projects.length; i++) {
if (this.model.projects[i].type === '1') {
// 可以设置一个变量,控制当前表单项里指定select的disable
}
}
},
deep: true
}
回答:
<z-select:disabled="item.type== '功能编码'"
v-model="item.standard"
placeholder="请选择..."
>
以上是 动态增减表单项,如何定位,根据一个select控制另外一个select? 的全部内容, 来源链接: utcz.com/p/933996.html