渲染页到详情页到加入购物车

1、渲染

拿到数据放在自己的data渲染

data(){

headerList: []

}

:class="tabid == index ? 'active' : ''" //tabid点击时的下标 index是数组下标 active是选中时状态

分类功能:

@click="handfenl(item.Value, index)" //实参是对比接口地址之后传不同的参数

handfenl(idx, index) {

this.tabid = index;  //下标

this.category = idx;//参数内容

let data1 = `module=Goods.Buy&action=GetGoods&page=1&SortKey=${this.SortKeyid}&category=${this.category}&theme=${this.theme}&price=${this.price}`;   //这个是post的参数 要是后端接口没有就不带

request.post("/art/ajax/index", data1).then((res) => {  //config中有前半截数据网址,/art/ajax/index是连接上形成一个完整的链接,data1是带的参数

this.mainList = res.data.Data;   //拿出数据给自己的数据包

});

mainList是所有数据包都可以赋值 然后 数据包改变

2、渲染好了点击跳转到详情页面

<router-link to="/detail/fen">   //跳转路劲

@click="handlJump(item)  //点击图片传给该路径的数据包(详情页的渲染)

因为要传数据到另一个页面所以

第一步

 methods: {

 ...mapMutations({  解构赋值的方法

      handlJump: "detail/Jump",//这个是状态机store的方法 到状态机方法的路径

    }),

  },

第二步状态机(detail.js)

import Vue from 'vue'  //引入

export default {

    namespaced: true,

    state() {

        return {

            data: [],

            test: {},

            detaList: []

        }

    },

    getters: {

       

    },

    mutations: {

        Jump(state, obj) {   方法名,接收的数据包

            state.data = obj;

            localStorage.setItem('shuaix', JSON.stringify(state.data));  //'shuaix'是传给详情页的数据包 详情页靠这个渲染

        },

       

    }

}

第三步 详情页

<div :plain="true" @click="open2"> 

<em @click=" cart(shuaix); handtianj(); ">加入购物车</em> 

</div>

//cart是一个方法,在store里面的cart.js中判断购物车是否有当前这个商品

//handtianj() 是一个函数方法把商品添加到购物车

cart:

import Vue from "vue";

export default {

  namespaced: true,

  state() {

    return {

      cartList: [],

      ischengg: true,

    };

  },

  mutations: {

    shopCart(state, obj) {

      //将详情页数据添加至购物车

      console.log(obj);

      var flag = 0;  //设定变量为0

      state.cartList.forEach((item) => {  //循环每一项

        if (obj.ArtworkId == item.ArtworkId) { 如果传入的id==目前数组中的id 

          flag = 1;

        }

      });

      if (flag) {  //如果传入的id==目前数组中的id 相同 加入购物车就是失败

        state.ischengg = false;

        console.log("失败");

      } else { //如果传入的id==目前数组中的id 不相同 加入购物车就是成功

        state.cartList.push(obj);   //然后把传入的obj推入到这个数组

        state.ischengg = true;    //单选框编程√

        console.log("成功");

      }

    },

  },

};

详情页handtianj()

handtianj() {

                if (!sessionStorage.UserName) { //判断是否登录

                    this.$router.push("/login"); //没有登录就把他路由转进登录页

                }

                if (this.bool == false) {   //跟状态中拿数据出来

                    this.msg = "添加失败,购物车已有此商品";

                    this.typ = "error";

                }

            },

购物车页面渲染

父组件:

import BuyCart from "./BuyCary.vue";  //引入子组件

export default {

  components: {

    BuyCart,   //挂载在本页面上

  },

  computed: {

    cart() {

      return this.$store.state.Cart.cartList;  //连接路由里面的cart.js中的cartList方法  目的数据包传给子组件用

    },

    allinfo() {

      return this.$store.getters["Cart/allinfo"];

    },

    cartList() {

      return this.$store.state.Cart.cartList;

    },

    userlist() {

      return this.$store.state.username.user;

    },

  },

  methods: {

    Allcheck() {   //全选

      this.$store.commit("Cart/Allcheck", this.allinfo.allcheck);

    },

    DelGoods() {  

      this.$store.commit("Cart/DelGoods");

    },

    insetcartlist() {

      this.$store.commit("Cart/insetCartList", this.userlist);

    },

  },

  created() {

    this.insetcartlist();

  },

};

子组件(可复用在结算页)

export default {

  data() {

    return {

      Ishome: this.$route.params.categroy,  //不知道是啥

    };

  },

  props: {

    cartList: {  //接收父组件的数据包

      type: Array,

      required: true,

    },

    check: {

      type: Boolean,

      default: true,

    },

  },

  methods: {

    changeCheck(idx) {

      this.$store.commit("Cart/changeCheck", idx);   //选中单选框

    },

  },

  created() {

    console.log(this.cartList);

    console.log(this.cartList[0].CountLike);

    console.log(this.$route.params.categroy);

  },

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值