码迷,mamicode.com
首页 > 其他好文 > 详细

vue前台(七点一)

时间:2020-07-21 23:23:02      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:组件   ack   vertica   put   getter   cti   from   就会   spec   

 

一,在detail组件中,向子组件zoom和 imglist传递数据,属性传递,

1.父组件detail

  computed: {
    ...mapGetters(["categoryView", "skuInfo", "spuSaleAttrList",‘imgList‘])
  },

向子组件传递数据

技术图片

 

 子组件接收

 props:[‘imgList‘],

 

zoom子组件填充数据

技术图片

 

注;此时控制台会报错, a.b.c假报错问题, 

技术图片

 

 

解决方式,此时需要判断imglist

技术图片

 

 再次填充数据

  <div class="spec-preview">
    <img :src="defaultImg.imgUrl" />
    <div class="event"  @mousemove="move"></div>
    <div class="big">
      <img :src="defaultImg.imgUrl" ref="bigImg"/>
    </div>
    <div class="mask" ref="mask"></div>
  </div>

 

 

二,小图列表点击,切换类

1.在imageslist组件中定义初始索引

  data() {
    return {
      currentIndex: 0
    };
  },

类名

.active {
        border: 2px solid #f60;
        padding: 1px;
      }

2.点击小图,切换类

 <div class="swiper-slide" v-for="(img, index) in imgList" :key="img.id">
        <img :src="img.imgUrl" @click="changeIndex(index)" :class="{active:currentIndex === index}" />
      </div>

回调函数,跟新索引,

  methods: {
    changeIndex(index) {
      this.currentIndex = index;

 

三,点击小图,切换一样的中图

1.在imagelist中点击小图,回调中传递index,用全局事件总线传递index,传递给兄弟组件zoom

<div class="swiper-slide" v-for="(img, index) in imgList" :key="img.id">
        <img :src="img.imgUrl" @click="changeIndex(index)" :class="{active:currentIndex === index}" />
      </div>

点击事件回调函数,搞事件总线,$emitc触发,传递index

  methods: {
    changeIndex(index) {
      this.currentIndex = index;
      this.$bus.$emit("changeDefaultIndex", index);
    }
  },

 

在zoom组件中,监听

  mounted(){
      this.$bus.$on(‘changeDefaultIndex‘,this.changeDefaultIndex)
    },

回调函数,跟新当前索引

 methods:{
      changeDefaultIndex(index){
        this.defaultIndex = index
      },

 

四,小图片的轮播图处理

 

1.html模板

 <div class="swiper-container" ref="imglist">
    <div class="swiper-wrapper">
      <div class="swiper-slide" v-for="(img, index) in imgList" :key="img.id">
        <img :src="img.imgUrl" @click="changeIndex(index)" :class="{active:currentIndex === index}" />
      </div>
    </div>
    <div class="swiper-button-next"></div>
    <div class="swiper-button-prev"></div>
  </div>

 

2.引入swiper

import Swiper from "swiper";
import "swiper/css/swiper.min.css";

3. 在实例化swiper

  watch: {
    imgList: {
      handler() {
        //Vue.nextTick或者vm.$nextTick是一样的功能
        //在最近的一次dom更新之后执行nextTick里面传的回调函数
        this.$nextTick(() => {
          new Swiper(this.$refs.imglist, {
            // direction: "vertical", // 垂直切换选项
            // autoplay:true,//等同于以下设置
            // loop: true, // 循环模式选项

            // // 如果需要分页器
            // pagination: {
            //   el: ".swiper-pagination"
            // },

            // 如果需要前进后退按钮
            navigation: {
              nextEl: ".swiper-button-next",
              prevEl: ".swiper-button-prev"
            },
            slidesPerGroup:5, //点击一下滑动一组有多少张
            slidesPerView:5 //一屏显示多少张
            // 如果需要滚动条
            // scrollbar: {
            //   el: ".swiper-scrollbar"
            // }
          });
        });
      },
      immediate: true //立即执行,在最近dom更新之前就会执行
    }
  }

 

 

vue前台(七点一)

标签:组件   ack   vertica   put   getter   cti   from   就会   spec   

原文地址:https://www.cnblogs.com/fsg6/p/13357028.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!