<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vuex之模块化modules开发实例</title>
<script src="vue.js"></script>
<script src="vuex.js"></script>
<script src="node_modules/axios/dist/axios.js"></script>
</head>
<body>
<div id="demo">
<footer-cart></footer-cart>
<Lists></Lists> </div>
<script type="text/x-template" id="Lists">
<div>
<h1 v-if="goods.length==0">
购物车中没有商品
<a href="">去购物吧</a>
</h1>
<div v-if="goods.length>0">
<table border="1">
<tr>
<th>编号</th>
<th>名称</th>
<th>价格</th>
<th>数量</th>
<th>总计</th>
<th>操作</th>
</tr>
<tr v-for="v in goods">
<td>{{v.id}}</td>
<td>{{v.title}}</td>
<td>{{v.price}}</td>
<td> <input type="text" v-model="v.num">
</td>
<td>{{v.totalPrice}}</td>
<td>
<button @click="del(v.id)">删除</button>
</td>
</tr>
</table>
</div>
</div>
</script>
<script type="text/x-template" id="footerCart">
<div v-if="totalPrice>0">
<div>
总计:{{totalPrice}}
</div>
</div>
</script>
<script>
let Lists = {
template: "#Lists",
computed: {
goods() {
//console.log(this.$store.state.cart.goods);
return this.$store.getters['cart/goods'];
}
},
methods: {
del(id) {
this.$store.commit('del', {id})
}
}
}
let footerCart = {
template: "#footerCart",
computed: {
totalPrice() {
return this.$store.getters['cart/totalPrice'];
}
}
}
const cartModule={
namespaced:true,//定义组件的命名空间:
state: {
goods: [{id:12}]
},
getters: {
//获取商品总价:
totalPrice: state => {
let totalPrice = 0;
state.goods.forEach((v) => {
totalPrice += v.num * v.price;
});
return totalPrice;
},
goods(state) {
let goods = state.goods;
goods.forEach((v) => {
v.totalPrice = v.num * v.price;
})
return goods;
}
},
mutations: {
//删除购物车中的商品
del(state, param) {
let k;
for (let i = 0; i < state.goods.length; i++) {
if (state.goods[i].id == param.id) {
k = i;
break;
}
}
state.goods.splice(k, 1);
},
setGoods(state, param) {
state.goods = param.goods;
}
},
actions: {
loadGoods(store) {
axios.get('073.php').then(function (response) {
store.commit('setGoods', {goods: response.data})
//console.log(response);
})
}
}
};
let store = new Vuex.Store({
modules:{
cart:cartModule
}
});
var app = new Vue({
el: "#demo",
store,
components: {
Lists, footerCart
},
mounted() {
this.$store.dispatch('cart/loadGoods');
}
});
</script>
</body>
</html>

  

最新文章

  1. 安装chocolatey
  2. 下面css hack的写法分别用于哪些浏览器
  3. PHP 用Class构造JSON数据
  4. Web 前端 —— javaScript
  5. 软工团队 - UML设计
  6. ThinkPHP页面跳转success与error方法
  7. Openstack中查看虚拟机console log的几种方法
  8. 潭州课堂25班:Ph201805201 爬虫基础 第十五课 js破解 二 (课堂笔记)
  9. SSM项目实战
  10. 微信小程序地图demo完整
  11. 第28章:MongoDB-索引--过期索引(TTL)
  12. js调试系列: 调试基础与技巧
  13. 如何搜索IP的地理位置
  14. Valgrind memcheck 8种错误实例
  15. HTML5/CSS3基础
  16. Substrings(SPOJ8222) (sam(后缀自动机))
  17. laravel之注册中间件
  18. RecyclerView 数据刷新的几种方式 局部刷新 notify MD
  19. Java虚拟机1:开篇
  20. .Net中的7Zip——Sharpcompress

热门文章

  1. android 通过webview调起支付宝app支付
  2. Python3基础 hasattr 测试类是否有指定的类属性
  3. 通过jquery获得某个元素的位置, 透明div, 弹出框, 然后在旁边显示toggle子级联菜单-hover的bug解决
  4. SQL 收集
  5. HDU 6073 Matching In Multiplication(拓扑排序+思维)
  6. Java中的this
  7. 在centos下解决 “致命错误:curses.h:没有那个文件或目录”
  8. SpringBoot开发案例之整合Kafka实现消息队列
  9. Fragment 的生命周期及使用方法详解
  10. Codeforces D - The Child and Zoo