Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
瓜皮233
Vue-购物车案例
提交
be888d61
V
Vue-购物车案例
项目概览
瓜皮233
/
Vue-购物车案例
与 Fork 源项目一致
Fork自
inscode / VueJS
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
Vue-购物车案例
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
be888d61
编写于
5月 04, 2023
作者:
6
642b59b229c89a1824b83ed8
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Auto commit
上级
b72da862
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
24 addition
and
11 deletion
+24
-11
src/App.vue
src/App.vue
+22
-9
src/components/Footer/Footer.vue
src/components/Footer/Footer.vue
+1
-1
src/components/Goods/Goods.vue
src/components/Goods/Goods.vue
+1
-1
未找到文件。
src/App.vue
浏览文件 @
be888d61
...
...
@@ -2,10 +2,12 @@
<div
class=
"app-container"
>
<Header
title=
"购物车案例"
></Header>
<!-- 循环渲染每个商品 -->
<Goods
v-for=
"item in list"
:key=
"item.id"
:title=
"item.goods_name"
:thumbnail=
"item.goods_img"
:isChecked=
"item.goods_state"
:id=
"item.id"
:price=
"item.goods_price"
:count=
"item.goods_count"
@
change-state=
"updateGoodState"
></Goods>
<Goods
v-for=
"item in list"
:key=
"item.id"
:title=
"item.goods_name"
:thumbnail=
"item.goods_img"
:isChecked=
"item.goods_state"
:id=
"item.id"
:price=
"item.goods_price"
:count=
"item.goods_count"
@
change-state=
"updateGoodState"
></Goods>
<!-- 渲染底部组件 -->
<Footer
:checked=
"allChecked"
:total-amount=
"totalAmount"
:total-count=
"totalCount"
@
change-all-state=
"changeAllState"
></Footer>
<Footer
:checked=
"allChecked"
:totalPrice=
"totalAmount"
:totalCheckedCount=
"totalCount"
@
change-all-state=
"changeAllState"
></Footer>
</div>
</
template
>
...
...
@@ -37,8 +39,14 @@ export default {
},
// 更新商品状态的方法
updateGoodState
({
id
,
state
})
{
const
item
=
this
.
list
.
find
(
item
=>
item
.
id
===
id
);
// 查找到对应 id 的商品
item
.
goods_state
=
state
;
// 更新对应商品的状态
console
.
log
(
id
,
state
);
this
.
list
.
some
(
item
=>
{
if
(
item
.
id
===
id
)
{
// 查找到对应 id 的商品
item
.
goods_state
=
state
;
// 更新对应商品的状态
return
true
}
});
},
// 修改全选状态的方法
changeAllState
(
state
)
{
...
...
@@ -52,11 +60,11 @@ export default {
},
// 计算选中商品的总价
totalAmount
()
{
return
this
.
list
.
filter
(
item
=>
item
.
goods_state
).
reduce
((
total
,
item
)
=>
total
=
item
.
goods_price
*
item
.
goods_count
,
0
);
// 过滤出已选商品,然后用 reduce 计算商品总价
return
this
.
list
.
filter
(
item
=>
item
.
goods_state
).
reduce
((
total
,
item
)
=>
total
+
=
item
.
goods_price
*
item
.
goods_count
,
0
);
// 过滤出已选商品,然后用 reduce 计算商品总价
},
// 计算选中商品的数量
totalCount
()
{
return
this
.
list
.
filter
(
item
=>
item
.
goods_state
).
reduce
((
total
,
item
)
=>
total
=
item
.
goods_count
,
0
);
// 过滤出已选商品,然后用 reduce 计算商品数量总和
return
this
.
list
.
filter
(
item
=>
item
.
goods_state
).
reduce
((
total
,
item
)
=>
total
+
=
item
.
goods_count
,
0
);
// 过滤出已选商品,然后用 reduce 计算商品数量总和
},
},
created
()
{
...
...
@@ -64,8 +72,13 @@ export default {
this
.
initBuyCars
();
// 监听事件总线的 'goods-count-change' 事件,当事件触发时更改对应商品的数量
eventBus
.
on
(
'
goods-count-change
'
,
({
id
,
value
})
=>
{
const
item
=
this
.
list
.
find
(
item
=>
item
.
id
===
id
);
// 查找到对应 id 的商品
item
.
goods_count
=
value
;
// 更新对应商品的数量
this
.
list
.
some
(
item
=>
{
// 查找到对应 id 的商品
if
(
item
.
id
===
id
){
item
.
goods_count
=
value
;
// 更新对应商品的数量
return
true
}
});
});
},
};
...
...
src/components/Footer/Footer.vue
浏览文件 @
be888d61
...
...
@@ -36,7 +36,7 @@ export default {
methods
:{
// 切换所有商品的选中状态
toggleAllGoods
(
e
){
this
.
$emit
(
'
change-all-state
'
,
{
value
:
e
.
target
.
checked
}
);
this
.
$emit
(
'
change-all-state
'
,
e
.
target
.
checked
);
},
}
}
...
...
src/components/Goods/Goods.vue
浏览文件 @
be888d61
...
...
@@ -69,7 +69,7 @@ export default {
// 切换商品选中状态
toggleGoodsChecked
(
e
)
{
// 触发一个自定义事件,将商品 ID 和选中状态传递给父组件
this
.
$emit
(
'
change-state
'
,
{
id
:
this
.
id
,
isChecked
:
e
.
target
.
checked
});
this
.
$emit
(
'
change-state
'
,
{
id
:
this
.
id
,
state
:
e
.
target
.
checked
});
},
},
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录