今年是小程序很火的一年,因此最近在自學微信小程序,因此打算本身擼一個小程序出來,因爲本身才剛剛自學不久。就作了一個相對簡單的傢俱小程序。固然在這其中也遇到了一些問題和bug,在這就和你們分享一下,這樣才能幫助更多的朋友。若有不足之處,但願你們提出寶貴的建議哈。這樣才能一塊兒成長,一塊兒進步。html
總所周知,隨着愈來愈多的app出如今了App商城,致使手機下載多了app會致使手機卡,因此這時微信小程序騰空而出。只要用戶掃一掃或者搜索一下就能打開應用,減小了咱們下載app的次數。git
萬事開頭難,關鍵是踏出第一步。在這裏我將分享一下我實現過程以及在實際過程當中遇到的坑。 首先先看看首頁效果吧github
.img-box image{
width: 100%;
height: 100%;
}
.img-box image:after{
content: "";
position: absolute;
bottom: 0;
width: 100%;
color: #fff;
padding: 50px 20px;
}
複製代碼
小程序的輪播實現是用了swiper組件,滑塊視圖容器裏面有indicator-dots,autoplay,setinterval等屬性,能夠設置自動播放,時間間隔。 插入的圖片能夠用wx:for來循環。小程序
wxml代碼:vim
<swiper class="section "indicator-dots="{{true}}" autoplay="autoplay" setInterval="3000" duration="500">
複製代碼
<view class="img-box">
<block wx:for="{{slides}}" wx:key="id">
<swiper-item>
<image src="{{item.image}}" mode="aspectFill" />
</swiper-item>
</block>
</view>
</swiper>
我這裏把圖片放在了js裏面遍歷。效果如圖所示
複製代碼
在點擊加入購物車之後,加入綁定事件本該跳轉到另外一個頁面的,可是遲遲沒有出現效果也沒有報錯,我覺得我拼寫或路徑有問題,但我檢查以後沒有問題啊,後來終於發現了一個坑。 這裏要跳轉的是tabBar的頁面,按照默認的跳轉是不容許的,查看了一下開發文檔才發現後端
原本想作的是點擊圖片進入詳情再點擊加入購物車就能保存到後臺的購物車裏 可是因爲自學的知識有限,後端目前還沒學,只能加入一個綁定事件跳轉到購物車。微信小程序
selectList(e){
let selectAllStatus = this.data.selectAllStatus;
const index=e.currentTarget.dataset.index;
let carts=this.data.carts;
const selected=carts[index].selected;
carts[index].selected=!selected;
selectAllStatus = carts[index].selected;
// if( carts[index].selected=!selected){
// selectAllStatus:false;
// }
this.setData({
carts,
selectAllStatus,
});
this.getTotalPrice();
},
deleteList(e) {
const index = e.currentTarget.dataset.index;
let carts = this.data.carts;
carts.splice(index,1);
this.setData({
carts: carts
});
if(!carts.length){
this.setData({
hasList: false
});
}else{
this.getTotalPrice();
}
},
addCount (e){
const index = e.currentTarget.dataset.index;
let carts = this.data.carts;
let num = carts[index].num;
num++;
carts[index].num = num
this.setData({
carts
})
this.getTotalPrice();
},
minuCount(e){
const index = e.currentTarget.dataset.index;
let carts = this.data.carts;
let num = carts[index].num;
if(num<=1) return false;
num--;
carts[index].num = num
this.setData({
carts
});
this.getTotalPrice();
},
selectAll(e){
let selectAllStatus = this.data.selectAllStatus;
selectAllStatus = !selectAllStatus;
let carts =this.data.carts;
for(let i=0;i<carts.length;i++){
if( carts[i].selected=!selectAllStatus){
selectAllStatus:false
}
carts[i].selected=selectAllStatus;
}
this.setData({
carts,
selectAllStatus
})
this.getTotalPrice();
},
getTotalPrice(){
let carts = this.data.carts;
let total = 0;
for(let i =0;i<carts.length;i++){
// total += carts[i].num *carts[i].price;
if(carts[i].selected){
total+= carts[i].num * carts[i].price;
}
}
this.setData({
totalPrice:total.toFixed(2)
})
}
複製代碼
<view class="userinfo">
<button wx:if="{{!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 獲取頭像暱稱 </button>
<block wx:else>
<image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>
<text class="userinfo-nickname">{{userInfo.nickName}}</text>
</block>
</view>
複製代碼
js代碼:api
onLoad: function () {
if (app.globalData.userInfo) {
this.setData({
userInfo: app.globalData.userInfo,
hasUserInfo: true
})
} else if (this.data.canIUse){
// 因爲 getUserInfo 是網絡請求,可能會在 Page.onLoad 以後才返回
// 因此此處加入 callback 以防止這種狀況
app.userInfoReadyCallback = res => {
this.setData({
userInfo: res.userInfo,
hasUserInfo: true
})
}
} else {
// 在沒有 open-type=getUserInfo 版本的兼容處理
wx.getUserInfo({
success: res => {
app.globalData.userInfo = res.userInfo
this.setData({
userInfo: res.userInfo,
hasUserInfo: true
})
}
})
}
},
getUserInfo: function(e) {
console.log(e)
app.globalData.userInfo = e.detail.userInfo
this.setData({
userInfo: e.detail.userInfo,
hasUserInfo: true
})
}
複製代碼
這個小程序還有一些功能尚未實現,好比購物車,用戶信息的保存在後臺的問題,之後等自學完後端的一些知識,我仍是得把這個小程序完整的作出來,喜歡的話你們能夠關注個人github,咱們能夠一塊兒學習,一塊兒搞基哈,也但願能夠給我提出一些寶貴的意見數組
源文件:github.com/duzuimoye/duzuimoye-xxf_fullstack/tree/master/duzuimoye-xxf_js_fullstack/wxapp/furniture 期待你的star和forkbash
第一次寫文章,項目可能不是很好,表達的也未必清除,請給新手多一點的鼓勵,點個贊,留下你的建議吧