vue实现选择商品规格功能

本文实例为大家分享了vue实现选择商品规格功能的具体代码,供大家参考,具体内容如下

要实现上图的效果,代码如下:

<template>
        <div class="popupSub">已选规格:{{showSelectSpec}}</div>
          <div class="subItem" v-for="(item,index) in subItemList" :key="index">
            <div class="itemTitle">{{item.itemTitle}}</div>
            <div class="itemContent">
              <ul>
                <li
                  v-for="(res,resIndex) in item.itemContent"
                  :key="res"
                  @click="selectItem(res,index,$event,resIndex)"
                  :class="subIndex[index] == resIndex?'selectActive':'itemLi'"
                >{{res}}</li>
              </ul>
            </div>
          </div>
</template>
<script>
export default {
    data() {
        return {
          showSelectSpec: "",
          subItemList: [
            {
              itemTitle: "味道",
              itemContent: ["原味", "猕猴桃味", "橙子味", "苹果味", "菠萝味"]
            },
            {
              itemTitle: "容量",
              itemContent: ["300ML", "400ML", "500ML", "1000ML"]
            }
          ],
          selectArr: [], // 存放被选中的值
          subIndex: [] // 是否选中 因为不确定是多规格还是但规格,所以这里定义数组来判断
        }
    },
    methods: {
        selectSpec(index) {
          let t = this;
          t.showSpec = true;
        },
        selectItem(res, index, enevt, resIndex) {
          let t = this;
          if (t.selectArr[index] !== res) {
            t.selectArr[index] = res;
            t.subIndex[index] = resIndex;
          } else {
            t.selectArr[index] = "";
            t.subIndex[index] = -1; // 去掉选中的颜色
          }
          t.checkItem();
        },
        checkItem: function() {
          var self = this;
          var option = self.subItemList;
          var result = []; // 定义数组存储被选中的值
          console.log(JSON.parse(JSON.stringify(self.selectArr)));
          for (let i in option) {
            result[i] = self.selectArr[i] ? self.selectArr[i] : "";
          }
          for (let i in option) {
            var last = result[i]; // 把选中的值存放到字符串last去
            for (let k in option[i].item) {
              result[i] = option[i].item[k].name; // 赋值,存在直接覆盖,不存在往里面添加name值
              console.log("这里:", JSON.parse(JSON.stringify(result)));
            }
            result[i] = last; // 还原,目的是记录点下去那个值,避免下一次执行循环时避免被覆盖
          }
          self.$forceUpdate(); // 重绘
          self.showSelectSpec = self.selectArr.join("、");
          console.log(self.showSelectSpec);
        }
    }
}
</script>
<style>
.popupSub {
  color: #aaaaaa;
  text-align: center;
  font-size: 0.8em;
  margin-top: 5px;
  letter-spacing: 2px;
}
.subItem {
  font-size: 0.8em;
  margin-top: 10px;
}
.itemContent ul,
li {
  display: flex;
  flex-wrap: wrap;
}
.itemContent ul li {
  padding: 0 10px;
  border-radius: 10px;
  margin-right: 10px;
  margin-top: 10px;
  height: 28px;
  line-height: 28px;
}
.itemLi {
  border: 1px solid #b3b3b3;
}
.selectActive {
  border: 1px solid #1697db;
  color: #1697db;
}
</style>

这只是简单的实现选择规格,如果一开始后台有返回数据,还需要定义一个接收数据的对象。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • vue商城中商品“筛选器”功能的实现代码

    在使用vue搭建商城项目的时候,要实现一个商品筛选器的功能,在完成之后,再一次被vue的数据驱动的强大感到震撼! 首先,我们来看一下具体的需求吧.你可以先看下面的这两张图,然后再看文字描述,可能会更容易理解. 没有触发时的状态 触发后的状态 我们需求有下面几点:        1.默认情况下,只显示一级菜单,二级菜单不显        2.存在二级菜单的情况下,在二级菜单没有显示的情况下,点击一级菜单,一级菜单的样式发生改变,二级菜单不显示        3.存在二级菜单的情况下,一级菜单已经点

  • Vue实现购物车的全选、单选、显示商品价格代码实例

    今天中午废了一会时间,总算把项目中的购物车的单选.全选.以及实现数据的动态显示做出来了,给小白分享一下我个人一个解决办法: 购物车的基本页面如下: 先说实现的总体思路 1.给table表中表头th加一个 checkbox,设这两个事件:@click="checkAll" v-model="checkall": 2.给对应的tr加一个 checkbox 绑定一个事件 v-model="checked",checked设为数组,专门放商品Id: 3.

  • Vue+Node实现商品列表的分页、排序、筛选,添加购物车功能详解

    本文实例讲述了Vue+Node实现商品列表的分页.排序.筛选,添加购物车功能.分享给大家供大家参考,具体如下: 1.分页 商品列表的分页实现是后台根据前端请求的页面大小.页码位置,去数据库中查询指定位置的数据然后返回给前端.比如页面大小为8,要查第3页的数据,则跳过2*8条数据,然后返回接下来的8条数据. 实现滚动加载:页面刚一加载完成并不需要请求所有数据,只显示一部分.当用户下拉到页面底部时,再去请求数据并拼接到商品数据列表中.通过vue-infinite-scroll插件实现滚动加载,在框架

  • vue实现商品规格选择功能

    本文实例为大家分享了vue实现商品规格选择的具体代码,供大家参考,具体内容如下 动手之前要先确定自己的商品数据结构,下面是我的商品数据结构 dataInfo: {         attr: [           {             attr_name: "码数",             attr_value: [{attr: "40"}, {attr: "50"}],             attr_values: ["

  • vue实现商品详情页功能之商品选项卡

    本文实例为大家分享了vue实现商品详情页功能之商品选项卡的具体代码,供大家参考,具体内容如下 用户点击商品进入商品详情页,默认显示第一个小图对应的大图,然后鼠标滑到小图上,大图也会发生改变,实现效果如下: 实现代码: shopitem.vue的template(HTML),上面是大图,下面是小图,鼠标滑动到小图上,触发getUrl事件(参数是小图的show属性,索引): item.json文件(我的数据文件,默认第一个小图的show为true,默认大图显示第一张.大图和小图的路径一样的,只是cs

  • vue实现商品购物车全选反选

    本文实例为大家分享了vue实现商品购物车全选反选的具体代码,供大家参考,具体内容如下 项目需求: 实现一个购物车全选框实现对商家和商品的全选商家全选框实现对当前商家所有商品的全选取消其中一个商品则取消对应商家全选和全选框选中一个商家下的所有商品则勾选对应商家的全选框,不勾选全选框选中所有商品则勾选所有商家全选框和全选框 我的思路: 1.通过对数据的简单操作可实现更深层次的全选操作2.vue.$set(object, key, value)给对象添加属性可以更新视图3.通过es6的every判断数

  • vue实现商品多选功能

    本文实例为大家分享了vue实现商品多选功能的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"> <head>   <meta charset="UTF-8">   <meta name="viewport" content="width=device-width, initial-scale=1.0">   <m

  • vue实现选择商品规格功能

    本文实例为大家分享了vue实现选择商品规格功能的具体代码,供大家参考,具体内容如下 要实现上图的效果,代码如下: <template>         <div class="popupSub">已选规格:{{showSelectSpec}}</div>           <div class="subItem" v-for="(item,index) in subItemList" :key=&quo

  • AngularJS+bootstrap实现动态选择商品功能示例

    本文实例讲述了AngularJS+bootstrap实现动态选择商品功能.分享给大家供大家参考,具体如下: 项目中后台一个商品库,新建活动时动态选择所需商品 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=e

  • Vue实现选择城市功能

    查看完整的代码请到   我的github地址  https://github.com/qianyinghuanmie/vue2.0-demos 一.结果展示 二.前期准备: 1.引入汉字转拼音的插件,利用NPM安装 代码指令为 npm install pinyin --save ,详细步骤请到pinyin 2.引入vue-resource,调用json文件,可以参考目录中的city.json,有条件的也可以自己去扒 三. 分析 所实现的功能点: 1.获取json数据展示城市列表 . 2.侧边字母

  • vue+vant实现商品列表批量倒计时功能

    最近因为一个项目需要用到商品批量倒计时,当时使用vant封装好的组件CountDown编写 起初不知道"timeData"这个对象只需要传time的时间戳就可以自动生成,走了一大波弯路,现在想想也是醉了 最开始写这个倒计时的时候没有考虑到使用当前服务器时间问题,只获取了本地时间 new Date().getTime(),然后发现这个不行,只要用户修改下手机本地时间,这个倒计时就不行了,有安全隐患,在网上也搜了一些相关知识,但都不尽人意,故想写这一篇文章避免大家再走我之前的弯路! 废话不

  • 小程序实现商品属性选择或规格选择

    本文实例为大家分享了小程序实现商品属性选择或规格选择的具体代码,供大家参考,具体内容如下 实现效果 1.wxml <view wx:for="{{list}}" wx:key="index" wx:key="index" wx:for-index="childIndex" style="margin: 40px 0"> <view>{{item.name}}</view>

  • Vue.js实现开发购物车功能的方法详解

    本文实例讲述了Vue.js实现开发购物车功能的方法.分享给大家供大家参考,具体如下: 购物车一般包含商品名称.单价.数量等信息,数量可以任意新增或减少,商品项也可删除,还可以支持全选或多选: 我们把这个小项目分为三个文件: index.html (页面) index.js (Vue 脚本) style.css (样式) 1 index.js 首先在 js 中初始化 Vue 实例,整体模板如下: var app = new Vue({ el: '#app', data: { ... }, moun

  • Vue.js实现价格计算器功能

    本文实例为大家分享了Vue.js实现价格计算器功能的具体代码,供大家参考,具体内容如下 实现效果: 实现代码及注释: <!DOCTYPE html> <html> <head> <title>价格计算器</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial

随机推荐