vue2循环的列表商品选择后的商品禁用

请添加图片描述

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <link
      rel="stylesheet"
      href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"
    />
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.13/vue.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/@unocss/runtime"></script>
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>
  </head>
  <body>
    <div id="app" class="h-90vh grid place-items-center">
      <div>
        <div v-for="(item,i) in list" class="mt-20px flex items-center">
          <el-button type="primary">{{item.name}}</el-button>

          <div v-for="(sel,v) in item.tags" class="flex items-center">
            <div
              class="w-180px flex items-center border-1px border-solid ml-20px rounded-5px border-#6f6f6f"
            >
              <el-select
                v-model="sel.value"
                placeholder="请选择"
                class="w-110px"
              >
                <el-option
                  v-for="item in getOption(item.tags)"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                  :disabled="item.disabled"
                >
                </el-option>
              </el-select>
              <el-input
                class="!flex-1"
                v-model="sel.num"
                placeholder="请输入内容"
              ></el-input>
            </div>

            <div
              v-if="v == item.tags.length - 1 "
              class="ml-10px text-26px"
              @click="changeList('add',i)"
            >
              +
            </div>
            <div
              v-else
              class="ml-10px text-26px"
              @click="changeList('del',i,v)"
            >
              -
            </div>
          </div>
          <div
            v-if="item.tags == 0"
            class="ml-10px text-26px"
            @click="changeList('add',i)"
          >
            +
          </div>
        </div>
      </div>
    </div>
    <script>
      new Vue({
        el: '#app',
        data() {
          return {
            list: [
              {
                name: '选择一',
                tags: [
                  {
                    value: '1',
                    num: 1,
                  },
                ],
              },
              {
                name: '选择二',
                tags: [],
              },
            ],
            options: [
              {
                value: '1',
                label: '黄金糕',
              },
              {
                value: '2',
                label: '双皮奶',
              },
              {
                value: '3',
                label: '蚵仔煎',
              },
              {
                value: '4',
                label: '龙须面',
              },
              {
                value: '5',
                label: '北京烤鸭',
              },
            ],
          };
        },
        computed: {
          getOption() {
            return (data) => {
              if (data == 0) {
                return this.options;
              } else {
                let newData = this.options.map((v) => {
                  return {
                    ...v,
                    disabled: data.map((e) => e.value).includes(v.value),
                  };
                });
                console.log(newData);
                return newData;
              }
            };
          },
        },
        methods: {
          changeList(val, i, v) {
            const change = {
              add: () => {
                if (this.list[i].tags.length == this.options.length) return;
                this.list[i].tags.push({
                  value: '',
                  num: '',
                });
              },
              del: () => {
                this.list[i].tags.splice(v, 1);
              },
            };
            change[val] ? change[val]() : '';
          },
        },
      });
    </script>
  </body>
</html>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值