Vue实现仿淘宝商品详情属性选择的功能

先看下效果图:(同个属性内部单选,属性与属性之间可以多选)

主要实现过程:

所使用到的数据类型是(一个大数组里面嵌套了另一个数组)具体格式如下:

  1.  
    attrAndValuees: [
  2.  
    {
  3.  
    'attrId': 1,
  4.  
    'attrName': '味道',
  5.  
    'valuees': [
  6.  
    {
  7.  
    'attrId': 1,
  8.  
    'value': '橘子味'
  9.  
    },
  10.  
    {
  11.  
    'attrId': 2,
  12.  
    'value': '草莓味'
  13.  
    }
  14.  
    ]
  15.  
    },
  16.  
    {
  17.  
    'attrId': 2,
  18.  
    'attrName': '容量',
  19.  
    'valuees': [
  20.  
    {
  21.  
    'attrId': 4,
  22.  
    'value': '100ml'
  23.  
    },
  24.  
    {
  25.  
    'attrId': 6,
  26.  
    'value': '300ml'
  27.  
    }
  28.  
    ]
  29.  
    }]

相关的Html 代码:

  1.  
    <div class="sortItem" v-for="(item,index) in attrAndValuees" :key="item.attrId">
  2.  
    <span>{{item.attrName}}:</span>
  3.  
    <ul>
  4.  
    <li v-for="(itemm,ind) in item.valuees" :key="itemm.attrId" :class="{'cur':sel[index] == ind}" @click="select(index,ind)" class="hand" >{{itemm.value}}</li>
  5.  
    </ul>
  6.  
    </div>

实现的原理:新建一个数组,数组的每一项代表一个属性值,由这个数组中的值来改变对应属性的样式

在data里新增一个数组 :

  1.  
    data () {
  2.  
    return {
  3.  
    sel: []
  4.  
    }
在methods中新增一个select方法,在点击属性值的时候调用
  1.  
    select: function (index, ind) {
  2.  
    this.sel[index] = ind;
  3.  
    this.$set(this.sel, index, ind)
  4.  
    // this.sel = this.sel.concat([]);
  5.  
     
  6.  
    }

就以上几个小步骤就可以实现这个效果了,是不是so easy~

不过这中间需要注意的有几点:

Vue之所以能够监听Model状态的变化,是因为JavaScript语言本身提供了Proxy或者Object.observe()机制来监听对象状态的变化。但是,对于数组元素的赋值,却没有办法直接监听,因此,在这个项目中我们用了set的方法来给数组赋值或者用concat连接一个空数组来对数组进行重新赋值。

若你想了解更多关于数组赋值的知识,可访问官网:https://cn.vuejs.org/v2/guide/list.html

Vue实现仿淘宝商品详情属性选择的功能的更多相关文章

  1. 仿淘宝商品详情页上拉弹出新ViewController

    新项目就要开始做了,里面有购物那块,就试着先把淘宝商品详情页的效果做了一下. 1.需求 1.第一次上拉时,A视图拉到一定距离将视图B从底部弹出,A视图也向上 2.显示B视图时下拉时,有刷新效果,之后将 ...

  2. 第十二篇、OC_仿淘宝商品详情页的翻页

    // // GFBProductViewController.m // elmsc // // Created by MAC on 2016/11/26. // Copyright © 2016年 G ...

  3. iOS app url scheme跳转到淘宝商品详情页 唤醒app

    最近涉及的一个业务,在app内的一个广告,点击打开webView,加载的是一个淘宝商品详情页,效果是打开该webView自动跳转至淘宝对应的页面,同时在自己的app仍然加载页面,点击评论等也同样能跳转 ...

  4. android电子书App、自定义图表、仿腾讯漫画App、仿淘宝优惠券、3D选择容器等源码

    Android精选源码 仿支付宝记账本功能,饼状图:数字键盘 android一款功能完善的电子书应用源码 Android自定义图标库,使用方便,扩展性强 android 3D立体无限旋转容器源码 an ...

  5. Android开发案例 - 淘宝商品详情

    所有电商APP的商品详情页面几乎都是和淘宝的一模一样(见下图): 采用上下分页的模式 商品基本参数 & 选购参数在上页展示 商品图文详情等其他信息放在下页展示 知识要点 垂直方向的ViewPa ...

  6. Android自己定义控件实战——仿淘宝商品浏览界面

    转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/38656929 用手机淘宝浏览商品详情时,商品图片是放在后面的,在第一个Scr ...

  7. vue实现仿淘宝结账页面

    这个demo,是小颖基于之前的 vue2.0在table中实现全选和反选   文章进行更新后的demo,主要功能呢,是仿照淘宝页面的结算购物车商品时自动算出合计价格的页面,具体页面效果请看下面的动图: ...

  8. Android自定义控件实战——仿淘宝商品浏览界面

    转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/38656929 用手机淘宝浏览商品详情时,商品图片是放在后面的,在第一个Scr ...

  9. Android开发案例 - 淘宝商品详情【转】

    http://erehmi.cnblogs.com/ 所有电商APP的商品详情页面几乎都是和淘宝的一模一样(见下图): 采用上下分页的模式 商品基本参数 & 选购参数在上页展示 商品图文详情等 ...

随机推荐

  1. Redis集群模式配置

    redis集群部署安装: https://blog.csdn.net/huwh_/article/details/79242625 https://www.cnblogs.com/mafly/p/re ...

  2. LL(1)语法分析器 //c++实现

    #include<iostream> #include<string> #include<map> #include<vector> #include& ...

  3. T2038 香甜的黄油 codevs

    http://codevs.cn/problem/2038/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond   题目描述 Description 农夫John ...

  4. 嵌入式cpu架构

    原文:http://www.kaixin001.com/repaste/11007221_7220618944.html### 内容: 目前主要CPU架构有ARM.X86/Atom.MIPS.Powe ...

  5. 批量修改WORD表格属性

    有时候需要对word中很多表格的属性进行修改,而word无法批量修改属性,所有这里记录一个宏 Sub TableFormatter() Dim oTbl As Table, i As Integer ...

  6. uwsgi 热启动

    uwsgi文件每次启动都要kill进程,这样非常麻烦,理想的情况是须要改动文件就自己主动生效,经查阅资料.发现uwsgi是自带该功能的,该功能的配置节例如以下 <uwsgi> <py ...

  7. html+vlc 播放多视频

    html代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  8. LeetCode_Lowest Common Ancestor of a Binary Search Tree (Binary Tree)

    Lowest Common Ancestor of a Binary Search Tree 一.题目描写叙述 二.思路及代码 二叉搜索树有个性质:左子树的值都比根节点小,右子树的值比根节点大.那么我 ...

  9. push代码到github时,每次都要输入用户名和密码的问题

    问题原由 我在Github上 建立了一个小项目TauStreamingServer,可是在每次push代码 的时候,都要求输入用户名和密码,很是麻烦. 如何才能避免每次都输入用户名和密码呢? 解决办法 ...

  10. Python 包的制作(__init__.py)

    如何制作一个自己的包:首先,需要创建一个文件夹,将其作为顶层包,在此文件夹内我们可以定义各个不同的子文件夹与 .py 文件作为各个子包与模块注意:在每个包文件夹下都需要有一个 __init__.py ...