技术标签: uni-app 小程序项目 uni-app
<!-- 购物车商品列表的标题区域 -->
<view class="cart-title">
<!-- 左侧的图标 -->
<uni-icons type="shop" size="18"></uni-icons>
<!-- 描述文本 -->
<text class="cart-title-text">购物车</text>
</view>
.cart-title {
height: 40px;
display: flex;
align-items: center;
font-size: 14px;
padding-left: 5px;
border-bottom: 1px solid #efefef;
.cart-title-text {
margin-left: 10px;
}
}
mapState
辅助函数,将 Store 中的 cart 数组映射到当前页面中使用:import badgeMix from '@/mixins/tabbar-badge.js'
// 按需导入 mapState 这个辅助函数
import {
mapState } from 'vuex'
export default {
mixins: [badgeMix],
computed: {
// 将 m_cart 模块中的 cart 数组映射到当前页面中使用
...mapState('m_cart', ['cart']),
},
data() {
return {
}
},
}
<!-- 商品列表区域 -->
<block v-for="(goods, i) in cart" :key="i">
<my-goods :goods="goods"></my-goods>
</block>
<!-- 商品左侧图片区域 -->
<view class="goods-item-left">
<radio checked color="#C00000"></radio>
<image :src="goods.goods_small_logo || defaultPic" class="goods-pic"></image>
</view>
.goods-item-left {
margin-right: 5px;
display: flex;
justify-content: space-between;
align-items: center;
.goods-pic {
width: 100px;
height: 100px;
display: block;
}
}
export default {
// 定义 props 属性,用来接收外界传递到当前组件的数据
props: {
// 商品的信息对象
goods: {
type: Object,
default: {
},
},
// 是否展示图片左侧的 radio
showRadio: {
type: Boolean,
// 如果外界没有指定 show-radio 属性的值,则默认不展示 radio 组件
default: false,
},
},
}
<!-- 商品左侧图片区域 -->
<view class="goods-item-left">
<!-- 使用 v-if 指令控制 radio 组件的显示与隐藏 -->
<radio checked color="#C00000" v-if="showRadio"></radio>
<image :src="goods.goods_small_logo || defaultPic" class="goods-pic"></image>
</view>
<!-- 商品列表区域 -->
<block v-for="(goods, i) in cart" :key="i">
<my-goods :goods="goods" :show-radio="true"></my-goods>
</block>
<!-- 商品左侧图片区域 -->
<view class="goods-item-left">
<!-- 存储在购物车中的商品,包含 goods_state 属性,表示商品的勾选状态 -->
<radio :checked="goods.goods_state" color="#C00000" v-if="showRadio"></radio>
<image :src="goods.goods_small_logo || defaultPic" class="goods-pic"></image>
</view>
<!-- 商品列表区域 -->
<block v-for="(goods, i) in cart" :key="i">
<!-- 在 radioChangeHandler 事件处理函数中,通过事件对象 e,得到商品的 goods_id 和 goods_state -->
<my-goods :goods="goods" :show-radio="true" @radio-change="radioChangeHandler"></my-goods>
</block>
methods: {
// 商品的勾选状态发生了变化
radioChangeHandler(e) {
console.log(e) // 输出得到的数据 -> {goods_id: 395, goods_state: false}
}
}
<!-- 商品左侧图片区域 -->
<view class="goods-item-left">
<radio :checked="goods.goods_state" color="#C00000" v-if="showRadio" @click="radioClickHandler"></radio>
<image :src="goods.goods_small_logo || defaultPic" class="goods-pic"></image>
</view>
methods: {
// radio 组件的点击事件处理函数
radioClickHandler() {
// 通过 this.$emit() 触发外界通过 @ 绑定的 radio-change 事件,
// 同时把商品的 Id 和 勾选状态 作为参数传递给 radio-change 事件处理函数
this.$emit('radio-change', {
// 商品的 Id
goods_id: this.goods.goods_id,
// 商品最新的勾选状态
goods_state: !this.goods.goods_state
})
}
}
// 更新购物车中商品的勾选状态
updateGoodsState(state, goods) {
// 根据 goods_id 查询购物车中对应商品的信息对象
const findResult = state.cart.find(x => x.goods_id === goods.goods_id)
// 有对应的商品信息对象
if (findResult) {
// 更新对应商品的勾选状态
findResult.goods_state = goods.goods_state
// 持久化存储到本地
this.commit('m_cart/saveToStorage')
}
}
import badgeMix from '@/mixins/tabbar-badge.js'
import {
mapState, mapMutations } from 'vuex'
export default {
mixins: [badgeMix],
computed: {
...mapState('m_cart', ['cart']),
},
data() {
return {
}
},
methods: {
...mapMutations('m_cart', ['updateGoodsState']),
// 商品的勾选状态发生了变化
radioChangeHandler(e) {
this.updateGoodsState(e)
},
},
}
注意:NumberBox 组件是 uni-ui 提供的
<view class="goods-info-box">
<!-- 商品价格 -->
<view class="goods-price">¥{
{
goods.goods_price | tofixed}}</view>
<!-- 商品数量 -->
<uni-number-box :min="1"></uni-number-box>
</view>
.goods-item-right {
display: flex;
flex: 1;
flex-direction: column;
justify-content: space-between;
.goods-name {
font-size: 13px;
}
.goods-info-box {
display: flex;
align-items: center;
justify-content: space-between;
}
.goods-price
一个可以远程控制的USB开关。
标题1标题2标题3
Java (批量)生成二维码工具类示例
Java基础面试题
文章浏览阅读464次,点赞6次,收藏5次。Linux远程连接工具Finalshell下载、安装和使用FinalShell 是一款由国人开发的 SSH 客户端工具,支持多平台,包括 Windows、Mac OS X 和 Linux。它主要用于一体化服务器管理,提供以下特性:Shell 和 SFTP 同屏显示:您可以同时查看 Shell 终端和 SFTP 文件传输界面,方便管理服务器。命令自动提示:FinalShell 提供命令自动补全功能,让您的命令输入更加简单、便捷。加速功能:软件内置加速功能,提高访问服务器的速度。_liunx 链接工具
文章浏览阅读2.5w次,点赞14次,收藏109次。(精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标,计算原理,依次列出。_真阳性率
文章浏览阅读334次。目录结构a.js对外导出对象let name = 'j'let age = 18let sex = 'm'// 导出对象export { name, age}// 默认导出export default sexb.js// 导入a.js中导出对象import {name, age} from './a.js'// 导入a.js中默认导出import sex from './a.js'console.log(name, age, sex)index_如何用es6模块化项目
文章浏览阅读809次。教育行业中大数据分析的主要目的包括改善学生成绩、服务教务设计、优化学生服务等。而学生成绩中有一系列重要的信息往往被我们常规研究所忽视。通过大数据分析和可视化展示,挖掘重要信息,改善 学生服务,对于教学改进意义重大。美国教育部门构建“学习分析系统”,旨在向教育工作者提供了解学生到底是在怎样学习的更好、更好、更精确信息。利用大数据的分析学习能够向教育工作者提供有用的信息,从而帮助其回答众多不易回答的现实问题。_对高中教学系统进行可视化分析,
文章浏览阅读362次。【BZOJ】4726 [POI2017] Sabota?Description某个公司有n个人, 上下级关系构成了一个有根树。其中有个人是叛徒(这个人不知道是谁)。_某个公司有n个人, 上下级关系构成了一个有根树。其中有个人是叛徒(这个人不知道是
文章浏览阅读1.9k次。ethtool命令设置接收端哈希功能,按照哈希结果将数据流分发到网卡的不同接收队列中。例如以下命令,指定ipv4的tcp数据流中参与哈希的字段(sdfn):/ # ethtool --config-ntuple eth0 rx-flow-hash tcp4 sdfn同样,使用ethtool命令查看设置结果如下:/ # ethtool --show-ntuple eth0 rx-flow-hash..._网卡hash算法设置
文章浏览阅读4.8k次。在WIN 10下之前装的PADS VX2.3,_pads win10适合安装哪个版本pads
文章浏览阅读7.4k次。最近在实现文件上传的时候,经常需要同一个文件夹上传多个相同路径的情况,就觉着这样很耗时间,特别是网速慢的时候,一个一个去上传,那是非常的慢,于是网上搜寻了一下一次性解压多个文件夹的命令之类的。都不太如意,于是就自己写了一个sh脚本。#!/bin/bash#本sh主要用于unzip解压多个文件夹的命令#事先获取需要解压的文件路径个数echo "正在检索文件夹:$#"#获取压缩的zip文件_win7 unzip 多个文件