最近一段时间,微信小程序特别火热,那么有哪些好用的小程序呢?我给大家推荐几个。
01首先就是“车来了精准实时公交”小程序,顾名思义它是用来乘坐公交车的,通过它可以搜索附近的公交车站以及公交路线,此外有些地方还支持查看某班公交车的到站情况;
02另外如果有些小伙伴需要经常扫描文档的话,那么搜索“文档扫描识别”这款小程序可以解决我们的不少麻烦,通过它既可以扫描纸质文件,也可以扫描手机本地;
03然后如果有失眠的朋友,那么可以试一试“小睡眠”小程序,它有着非常丰富的背景音乐,而且不是那种特别吵闹的音乐,而是生活中有助于睡眠的各种场景,比如下雨、雪夜以及刮风等音乐,如下图
04最后给大家推荐“一封密信”小程序,它可以将微信转换为加密信息,对方想要查看内容,必须和我们索要密码才能打开,比较适用于情侣之间或者业务往来方面的聊天;
本篇文章主要介绍了微信小程序实战篇之购物车的实现代码示例,详细的介绍了购物车的功能实现,具有一定的参考价值,有兴趣的可以了解一下
哈喽,大家好,快半个月没写了,现在提笔都有点生硬了,一直没更新的原因,一个是代码君也要上班,加上最近工作比较忙,还有就是写文章一直未被认可,所以没什么动力再创作了,那时真的坚持不下去,打算放弃了,感谢读者曹明,一个韩国的研究生读者,支持我,并给我鼓励,期待我更新下一篇,我非常感动,瞬间战斗力恢复,其实你们简单的点赞,评论,都是给我最大的支持,好了,煽情完毕,该讲今天的重点了,购物车,购物车的界面实现到不是很难,难点是处理里面的逻辑,无论是小程序,还是APP,购物车的逻辑都是最难的,下面开始教大家如何实现购物车了,先上效果图
购物车实现
cartwxml
<import src="/template/quantity/indexwxml" />
<scroll-view class="scroll" scroll-y="true">
<view class="separate"></view>
<view wx:for="{{carts}}">
<view class="cart_container">
<image class="item-select" bindtap="switchSelect" data-index="{{index}}" data-id="{{index}}" src="{{itemisSelect'//images/cart/comment_selectpng':'//images/cart/comment_normalpng'}}" />
<image class="item-image" src="{{itempic}}"></image>
<view class="column">
<text class="title">{{itemname}}</text>
<view class="row">
<text class="sku-price">¥</text>
<text class="sku-price">{{itemprice}}</text>
<view class="sku">
<template is="quantity" data="{{ itemcount, componentId: index }}" />
</view>
</view>
</view>
</view>
<view class="separate"></view>
</view>
</scroll-view>
<view class="bottom_total">
<view class="bottom_line"></view>
<view class="row">
<image class="item-allselect" bindtap="allSelect" src="{{isAllSelect'//images/cart/comment_selectpng':'//images/cart/comment_normalpng'}}" />
<text class="small_text">全选</text>
<text>合计:¥ </text>
<text class="price">{{totalMoney}}</text>
<button class="button-red" bindtap="toBuy" formType="submit">去结算</button>
</view>
</view>布局不是很复杂,一个循环列表,循环出购物车商品,外加一个结算的底部控件,还需要提醒的是,循环列表外面要加一层scroll-view,这样当数据很多是时候,可以滚动,不熟悉scroll-view的,请自行翻看前面几篇文章,里面有讲解
catwxss
/ pages/cart/cartwxss /
cart_container {
display: flex;
flex-direction: row;
}
scroll {
margin-bottom: 120rpx;
}
column {
display: flex;
flex-direction: column;
}
row {
display: flex;
flex-direction: row;
align-items: center;
}
sku {
margin-top: 60rpx;
margin-left: 100rpx;
}
sku-price {
color: red;
position: relative;
margin-top: 70rpx;
}
price {
color: red;
position: relative;
}
title {
font-size: 38rpx;
margin-top: 40rpx;
}
small_text {
font-size: 28rpx;
margin-right: 40rpx;
margin-left: 10rpx;
}
item-select {
width: 40rpx;
height: 40rpx;
margin-top: 90rpx;
margin-left: 20rpx;
}
item-allselect {
width: 40rpx;
height: 40rpx;
margin-left: 20rpx;
}
item-image {
width: 180rpx;
height: 180rpx;
margin: 20rpx;
}
bottom_line {
width: 100%;
height: 2rpx;
background: lightgray;
}
bottom_total {
position: fixed;
display: flex;
flex-direction: column;
bottom: 0;
width: 100%;
height: 120rpx;
line-height: 120rpx;
background: white;
}
button-red {
background-color: #f44336; / 红色 /
}
button {
position: fixed;
right: 0;
color: white;
text-align: center;
display: inline-block;
font-size: 30rpx;
border-radius: 0rpx;
width: 30%;
height: 120rpx;
line-height: 120rpx;
}wxss样式没什么可说的,了解其属性,调用class就好,重点说一下cartjs,全篇的逻辑都在这里面
cartjs
// pages/cart/cartjs
var Temp = require('//template/contractjs');
Page(Objectassign({}, TempQuantity, {
data: {
isAllSelect:false,
totalMoney:0,
// 商品详情介绍
carts: [
{
pic: "http://mzdjmallxmispcn/files/product/20161201/148058328876jpg",
name:"日本资生堂洗颜",
price:200,
isSelect:false,
// 数据设定
count: {
quantity: 2,
min: 1,
max: 20
},
},
{
pic: 'http://mzdjmallxmispcn/files/product/20161201/148058301941jpg',
name: "倩碧焕妍活力精华露",
price: 340,
isSelect: false,
// 数据设定
count: {
quantity: 1,
min: 1,
max: 20
},
},
{
pic: 'http://mzdjmallxmispcn/files/product/20161201/14805828016jpg',
name: "特效润肤露",
price: 390,
isSelect: false,
// 数据设定
count: {
quantity: 3,
min: 1,
max: 20
},
},
{
pic: 'http://mzdjmallxmispcn/files/product/20161201/148058228431jpg',
name: "倩碧水嫩保湿精华面霜",
price: 490,
isSelect: false,
// 数据设定
count: {
quantity: 1,
min: 1,
max: 20
},
},
{
pic: 'http://mzdjmallxmispcn/files/product/20161201/148057953326jpg',
name: "兰蔻清莹柔肤爽肤水",
price: 289,
isSelect: false,
// 数据设定
count: {
quantity: 10,
min: 1,
max: 20
},
},
{
pic: "http://mzdjmallxmispcn/files/product/20161201/148057921620_middlejpg",
name: "LANCOME兰蔻小黑瓶精华",
price: 230,
isSelect: false,
// 数据设定
count: {
quantity: 1,
min: 1,
max: 20
},
},
],
},
//勾选事件处理函数
switchSelect: function (e) {
// 获取item项的id,和数组的下标值
var Allprice = 0,i=0;
let id = etargetdatasetid,
index = parseInt(etargetdatasetindex);
thisdatacarts[index]isSelect = !thisdatacarts[index]isSelect;
//价钱统计
if (thisdatacarts[index]isSelect) {
thisdatatotalMoney = thisdatatotalMoney + thisdatacarts[index]price;
}
else {
thisdatatotalMoney = thisdatatotalMoney - thisdatacarts[index]price;
}
//是否全选判断
for (i = 0; i < thisdatacartslength; i++) {
Allprice = Allprice + thisdatacarts[i]price;
}
if (Allprice == thisdatatotalMoney)
{
thisdataisAllSelect=true;
}
else
{
thisdataisAllSelect = false;
}
thissetData({
carts: thisdatacarts,
totalMoney: thisdatatotalMoney,
isAllSelect: thisdataisAllSelect,
})
},
//全选
allSelect: function (e) {
//处理全选逻辑
let i = 0;
if (!thisdataisAllSelect)
{
for (i = 0; i < thisdatacartslength; i++) {
thisdatacarts[i]isSelect = true;
thisdatatotalMoney = thisdatatotalMoney + thisdatacarts[i]price;
}
}
else
{
for (i = 0; i < thisdatacartslength; i++) {
thisdatacarts[i]isSelect = false;
}
thisdatatotalMoney=0;
}
thissetData({
carts: thisdatacarts,
isAllSelect: !thisdataisAllSelect,
totalMoney: thisdatatotalMoney,
})
},
// 去结算
toBuy() {
wxshowToast({
title: '去结算',
icon: 'success',
duration: 3000
});
thissetData({
showDialog: !thisdatashowDialog
});
},
//数量变化处理
handleQuantityChange(e) {
var componentId = ecomponentId;
var quantity = equantity;
thisdatacarts[componentId]countquantity = quantity;
thissetData({
carts: thisdatacarts,
});
}
}));介绍一下用到的参数
isAllSelect:是否全选
totalMoney:总金额
carts :购物车商品数据
switchSelect 勾选按钮需要做的逻辑处理
判断是否达到全部勾选,如果全部勾选,底部的全选按钮要点亮,判断依据是,价钱是否等于总价,当然这只是一种判断方式,读者也可以通过勾选的数量判断,
对勾选或取消的按钮,进行总价的加减法计算
thissetData,更新数据,这个是重点,每次处理完数据,都要记得更新数据
allSelect 全选按钮的逻辑处理
全选就把每个item勾选图标点亮,然后统计总价钱,不全选就置为灰色,总价钱为0
thissetData更新数据
微信小程序数据处理
一、修改数据方式
data:{
name:'我是初始化的name'
}1、thisdataname
thisdataname='我是代码君data'2、thissetData
thissetData({
name:'我是代码君setData'
})这两种方式都可以改变数据,thissetData的好处是可以有刷新的效果,即实时更新数据
二、修改对象数组
data:{
person:{
name:'代码君',
city:'厦门'
}
}修改全部对象
thissetData({
person:{
name:'新代码君',
city:'湖南'
}
})修改部分数据
thissetData({
'personname': '代码君只修改名字'
})
//多个数组用这个
thissetData({
'person[0]name': '代码君只修改名字'
})三、添加删除数据
1、添加数据concat
//假设这一段是我们要新增的数组
var newarray = [{
name:'增加的数据--'+new Date()getTime() ,
}];
//向前--用newarray与thisdatalist合拼
thisdatalist = newarrayconcat(thisdatalist);
//向后--用thisdatalist与newarray合拼
thisdatalist = thisdatalistconcat(newarray);2、删除数据splice()删除数据,然后返回被删除的数据
//删除
remove:function (e){
var dataset = etargetdataset;
var Index = datasetindex;
//通过index识别要删除第几条数据,第二个数据为要删除的项目数量,通常为1
thisdatalistsplice(Index,1);
//渲染数据
thissetData({
list:thisdatalist
});
}3、清空数据
//清空
clear:function (){
//其实就是让数组变成一个空数组即可
thissetData({
list:{}
});
}上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
使用dataset如何实现延时加载
在jquery中有关手机触屏滑动功能
在Mac中如何安装nvm(详细教程)
在微信小程序中如何实现时间功能
视频号直播只能在微信上。根据相关功能介绍,小程序开发者需要明确的是,微信小程序只支持跳转与其主体信息一致的视频号直播。小程序主体信息可通过“小程序资料页-开发团队”进行查询,视频号主体信息可通过“视频号首页-认证进行查询”。
相关知识
有小程序服务商告诉亿邦动力,小程序在5月已经开放了视频号相关接口,只是视频号接口需要开发者自己具备开发能力才能使用。这次的变化,相当于把需要开发的过程变成了一个标准产品,只需简单配置即可。
有微信生态服务商指出,上述“微信游戏直播”的案例只是为小程序跳转视频号直播提供了一个形式模板,零售商家小程序和视频号直播跳转必须保持主体一致。不过,“微信游戏直播”也可谓是视频号游戏主播获得的另一个流量入口。
是《欢乐球球》,玩法如下:
工具:华为手机。
软件:微信。
版本:1652。
1、首先点击“开始游戏”,进入游戏环节。
2、向左,或者向右,让小球往空隙的缺口跳动。
3、当小球跳动到空隙缺口,就会往下掉落。
4、每次掉落一层,就会得1分,掉落层数越多,得分越多。
5、当小球掉落到橙色的位置,游戏就结束。
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)