import Vue from 'vue';
import Vuex, {
Store
} from 'vuex';
import { stat } from 'fs'; Vue.use(Vuex);
let store = new Store({
state:{
list: [
{ id:1,
count: 0,
price: 10,
goodsname: '橘子'
},
{ id:2,
count: 0,
price:8,
goodsname: '苹果'
},
{ id:3,
count: 0,
price:4,
goodsname: '香蕉'
},
{ id:4,
count: 0,
price:4,
goodsname: '桃子'
}
],
sum:0,
price:0 },
getters: {
sellPrice(state) {
return (ind)=>{ //getters 传参
return state.list[ind].price * state.list[ind].count;
}
},
mycount(state){
state.sum=0; //必须初始化每次的数量
for(let i= 0;i<state.list.length;i++){//遍历总数
let num = state.list[i].count;
state.sum+=num
}
return state.sum;
},
allPrice(state){
state.sum=0;//必须初始化每次的数量确保每次遍历的值都是准确的
state.price=0;//必须初始化每次的价格确保每次遍历的值都是准确的
for(let i= 0;i<state.list.length;i++){ //遍历总数
let num = state.list[i].count;
let price = state.list[i].price;
state.price += num*price;
}
return state.price;
}
},
mutations: {
add(state,ind) { //进行数量的增加
state.list[ind].count++;
},
del(state,ind) { //进行数量的
if (state.list[ind].count === 0) {
state.list[ind].count === 0;
} else {
state.list[ind].count--;
}
}
}
})
export default store;

app.vue

<template>
<div id="app">
<table class="table">
<tr>
<td>商品</td>
<td>价格</td>
<td>数量</td>
<td colspan="3"></td>
</tr>
<tr v-for='(item,ind) in list' :key="ind">
<td> {{item.goodsname}}</td>
<td>{{item.price}}/斤</td>
<td><input type="text" v-model.number="item.count" class="num" ></td>
<td>总价{{sellPrice(ind)}}</td>
<td>
<button @click="add(ind)">add</button>
</td>
<td><button @click="del(ind)">del</button></td>
</tr>
<tr>
<td colspan="2"></td>
<td>
<span>总量{{mycount}}</span>
</td>
<td>
<span>结算{{allPrice}}</span>
</td>
</tr>
</table>
</div>
</template> <script>
import { mapGetters, mapState, mapMutations, mapActions } from "vuex";
export default {
name: "App",
computed: {
...mapGetters(["sellPrice", "mycount", "allPrice"]),
...mapState(["list"])
},
created() {},
methods: {
...mapMutations(["add", "del"])
}
};
</script> <style>
#app {
font-family: "Avenir", Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
ul {
list-style: none;
margin: 0;
padding: 0;
}
.num {
max-width:100px;
width: 20px;
display: inline-block;
height: auto;
outline: none;
text-align: center;
}
.table {
width: 500px;
overflow: hidden;
background: skyblue;
}
tr,td{
width: 100px;
text-align: center;
border: none;
border: 1px solid black;
}
</style>

vuex的购物车效果 index.js的更多相关文章

  1. 踩坑记录-nuxt引入vuex报错store/index.js should export a method that returns a Vuex instance.

    错误 store/index.js代码如下: import Vue from 'vue'; import Vuex from 'vuex'; import city from './moudle/ci ...

  2. 用vuex实现购物车功能

    效果图 展示目录结构 product组件(纯静态代码) cart组件(纯静态代码) info组件(纯静态代码) 完成以上的三个组件,现在要开始调用这些组件,在App.vue中调用 如果你的姿势正确的话 ...

  3. vuex中store分文件时候index.js进行文件整合

    import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex); import getters from './getters.js' impo ...

  4. angularjs购物车效果

    用angularjs写了一个购物车效果中. html代码: <div png-app="myAp" ng-controller="conTroll"> ...

  5. vuex实现购物车功能

    购物车功能描述: 1. 点击+,-按钮,“已选:xx件”随之增减 2. checkbox选中时,当前项的已选数量增加到头部“已选择xx件”中,未选中时数量不计入 代码: 服务端 node+koa+ko ...

  6. jQuery实现购物车效果

    简单的购物车效果 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  7. JavaScript实现的购物车效果-效果好友列表

    JavaScript实现的购物车效果.当然,可以在许多地方使用这种效果.朋友的.例如,在选择.人力资源模块,工资的计算,人才选拔等..下面来看一下班似有些车效果图: watermark/2/text/ ...

  8. PC,移动端H5实现实现小球加入购物车效果

    HTML部分: <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" ...

  9. 使用session页面控制登录入口及购物车效果的实现

          由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 内容.实际上在服务器端的 Session 文件,PHP 自动修改 Session 文件的权限,只 ...

随机推荐

  1. JAVA 容易忽略的东西

    Java中的取余会出现负数.用Math.floorMod()方法可以掰正,但是也仅限被除数是负数的情况,如果除数是负数,这个没用. 和C不一样,Java中的字符串是不可变字符串,不能修改Java字符串 ...

  2. human pose estimation

    2D Pose estimation主要面临的困难:遮挡.复杂背景.光照.真实世界的复杂姿态.人的尺度不一.拍摄角度不固定等. 单人姿态估计 传统方法:基于Pictorial Structures, ...

  3. 如何使用JVisualVM进行性能分析

    地址:https://visualvm.dev.java.net/ 连接 1.本地机器的程序直接可以监听到 2.远程机器的程序需要加上JVM参数 -Dcom.sun.management.jmxrem ...

  4. inline-block,一个奇怪的问题:中间div掉下来

    先上代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <tit ...

  5. 最小生成树 A - 畅通工程

    dalao视频:https://www.bilibili.com/video/av4768483 https://www.bilibili.com/video/av4768483?p=2 省政府“畅通 ...

  6. static 关键字和类的加载顺序

      静态变量在类加载时初始化,而非静态变量在创建对象时初始化.static关键字修饰的变量就是静态变量. 子类继承父类,子类在生成对象的时候,先初始化父类的成员变量,接着执行父类的构造器,完成父类的初 ...

  7. 2.04-proxy-handler

    import urllib.request def create_proxy_handler(): url = "https://blog.csdn.net/m0_37499059/arti ...

  8. CSAPP:第一章计算机系统漫游

    CSAPP:计算机系统漫游 关键点:上下文.程序运行.计算机系统抽象. 信息就是位+上下文一个程序的运行过程系统的硬件组成编译系统是如何工作的?一个程序的运行过程(c语言举例)计算机系统中的抽象 信息 ...

  9. [HAOI2018]染色

    嘟嘟嘟 这题当时没想出来(因为本人实在不太擅长计数),然后又被luogu的第一篇题解吓怕了,就咕了一小段时间再写. 其实这题不是很难. 做法就是基础容斥+NTT. 首先出现\(S\)次的颜色最多有\( ...

  10. 微信硬件平台(一) 公众号 ESP8266 Arduino LED

    微信硬件平台 本文目的,使用微信公众号控制ESP8266的LED开和关.进一步使用微信当遥控器(避免写APP或者IOS或者小程序),控制一切设备.给两个关键的总教程参考. 官网教程  微信硬件平台 微 ...