关于element ui中的选择器和vue监听函数watch的一个结合使用:

关于element ui中的选择器和vue监听函数watch的一个结合使用:
需求如下:首先每选定一个选择器,另一个选择器中的内容要被渲染出来,思路就是,监听每个选择器中双向绑定的数据,一旦这个选择器中选定数据下一个选择器就去发送请求
补充一下关于这个选择器的一些小知识:v-model对应的是选中的内容,v-for循环的数组就是点开选择器你能看到的一系列的数据
在这里插入图片描述
第一个选择器中没有内容的时候,第二个选择器中是没有数据的
在这里插入图片描述
当第一个选择器中有数据的时候,第二个选择器可以开始选择
在这里插入图片描述
同理第二个和第三个也是一样,就不赘述了,上代码:

<el-form ref="form" :model="sizeForm" label-width="80px" size="mini">
        <el-form-item label="选择商家">
          <el-select v-model="organizationCheck" placeholder="请选择商家">
            <el-option
              v-for="item in optionsCheck"
              :key="item.value"
              :label="item.label"
              :value="item.name">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="选择设备">
          <el-select v-model="organizationCheckDevice" placeholder="请选择设备">
            <el-option
              v-for="item in optionsCheckDevices"
              :key="item.value"
              :label="item.label"
              :value="item.identifier">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="选择版本">
          <el-select v-model="organizationCheckPatch" placeholder="请选择版本">
            <el-option
              v-for="item in optionsCheckPatch"
              :key="item.value"
              :label="item.label"
              :value="item.version">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item size="large">
          <el-button type="primary" size="small" @click="onSubmitCheck">开始测试</el-button>
          <!-- <el-button size="small" @click="dialogFormVisibleCheck = false">取消</el-button> -->
        </el-form-item>
        <el-form-item label="测试结果">
          <el-input autosize type="textarea" v-model="result"></el-input>
        </el-form-item>
      </el-form>

在data中对应的双向绑定数据是:

data() {
		organizationCheck:'',
		organizationCheckPatch:'',
		organizationCheckDevice:'',

}
watch:{
	organizationCheck: {
        handler() {
          getOganizations().then((res) => {
            // console.log('........',res.data.organizations)
            const organizations = res.data.organizations
            let obj = organizations.find(o => o.name === this.organizationCheck);
            // console.log('///',obj)
            this.organizationId = obj.id
            // console.log('99999',this.organizationId)
          })
          let obj = this.optionsCheckSave.find(o => o.name === this.organizationCheck);
          getOganizationsDevices(obj.id).then((res) => {
            // console.log(res)
            this.optionsCheckDevices = res.data.devices
            const devices = res.data.devices
            let obj = devices.find(o => o.identifier === this.organizationCheckDevice);
            // console.log('pppppp',obj)
          })
        },
      },
      organizationCheckDevice: {
        handler() {
          let obj = this.optionsCheckSave.find(o => o.name === this.organizationCheck);
          // console.log('1111111',obj)
          getOganizationsDevices(obj.id).then((res) => {
            // console.log(res)
            this.optionsCheckDevices = res.data.devices
            const devices = res.data.devices
            let obj = devices.find(o => o.identifier === this.organizationCheckDevice);
            // console.log('222222',obj)
            this.deviceId = obj.id
            // console.log('0000',this.deviceId)
            getOganizationsDevicesCheck(this.organizationId,this.deviceId).then((res) => {
              // console.log('dyyadhy',res)
              this.deviceType = res.data.type
              const channelid = res.data.channel.id
              // console.log(channelid)
              getChannelDetail(channelid).then((res) => {
                // console.log(res)
                this.optionsCheckPatch = res.data.Patches
              })
            })


          })
          // let obj = this.optionsCheckSave.find(o => o.name === this.organizationCheck);
          // console.log(obj)
          // getOganizationsDevices(obj.id).then((res) => {
          //   console.log(res)
          //   this.optionsCheckDevices = res.data.devices

          // })
        },
      },
}

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Realistic-er

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值