微信小程式購物車-多商家-多商品

来源:http://www.cnblogs.com/00h5/archive/2017/10/31/7763351.html
-Advertisement-
Play Games

主要看一下購物車的計算過程 實現後的基本樣式 # 具體代碼 主要看shops頁面, 前提:獲取基本的數據,由於數據太長,還請下載項目後查看,github地址:https://github.com/cxy-js/wechat-shop + shops頁面data數據 ``` data: { shops ...


主要看一下購物車的計算過程實現後的基本樣式

 

# 具體代碼主要看shops頁面,前提:獲取基本的數據,由於數據太長,還請下載項目後查看,github地址:https://github.com/cxy-js/wechat-shop+ shops頁面data數據``` data: {    shops: {},           //商品    curt: 0,             //分類id    curindex: 0,         //當前index    idx: 0,    ishow: 1,    cai: [],             //菜的數組    allprice: 0,        //總家    allnum: 0          //總商品數  },  ```    ``` onLoad: function (options) {    let id = options.id;    //商家詳情本地請求資源    wx.showToast({      title: '成功',      duration: 500,      success: (e) => {        if (e.errMsg === 'showToast:ok') {          this.setData({            shops: data.shops[id],            cai: data.shops[id].cai          })          console.log(this.data.cai)        } else {          console.log(e.errMsg)        }      }    })  }  ```+ id 為index頁面傳過來的商家 id;依據商家id來顯示不同商家+ 進入商家頁面 後的佈局;頭部就不看了,主要看菜的分類以及都有哪些菜在這之前需要在商品以及評價的切換中拿到curt,curt就是分類的id+ 菜品切換``` <view class='left-nav'>          <view wx:for="{{shops.lefttitle}}">            <view class="shops-left-title {{curt == item.id ? 'bg' : ''}}" catchtap="goIndex" data-id="{{item.id}}" data-index="{{index}}">              <text class='t'>{{item.lefttitle}}</text>            </view>          </view>        </view>```+ 切換代碼就不看了,主要是拿到分類的id=>curt### 下麵就是分類下的佈局 ```<scroll-view scroll-y class='scroll'>          <view class='cai'>            <!--一句curt來顯示不是菜 curt===分類id-->            <view wx:for="{{cai[curt]}}" wx:for-item="cai" wx:for-index="caiindex">              <!--具體的菜-->              <view class='right-cai'>                <image src="{{cai.img}}"></image>                <view class='middle'>                  <text>{{cai.cainame}}</text>                  <text class='shou'>月售{{cai.shou}}</text>                  <text class='price'>¥{{cai.price}}</text>                </view>                <!--加減按鈕-->                <view class='btn'>                  <text class='add' catchtap="minus" data-index="{{caiindex}}" wx:if="{{cai.num===0?false:true}}">-</text>                  <text class='cainum' wx:if="{{cai.num===0?false:true}}">{{cai.num}}</text>                  <text class='add' catchtap="add" data-index="{{caiindex}}">+</text>                </view>              </view>            </view>          </view> </scroll-view>        ```#### 先來看下增加的計算邏輯``` //增加商品數量  add(e) {    let index = e.currentTarget.dataset.index    let cai = this.data.cai;    let curt = this.data.curt;//當前是哪個分類下的菜    let num = cai[curt][index].num;//當前菜的數量    num++;    cai[curt][index].num = num //點擊後菜的數量    this.setData({      cai: cai   //更新菜    })    this.getAll() //計算總計  } ``` 點擊按鈕時依據哪個分類下的哪個菜來區分;每點擊一次商品數量+1;最後需要實時計算價格  this.getAll()  #### 減少的計算邏輯與增加超不多 ``` minus(e) {    let index = e.currentTarget.dataset.index    let cai = this.data.cai;    let curt = this.data.curt;//當前是哪個分類下的菜    let num = cai[curt][index].num;    if (num <= 0) {      return false;    }    num--;    //重新賦值數量    cai[curt][index].num = num    this.setData({      cai: cai    })    this.getAll()  } ``` 多了一個判斷而已  #### 接下來就是計算總價格 ```  //計算總價  getAll() {    let cai = this.data.cai;    let total = 0;    let allnum = 0;    let allcainame=""    //迴圈當前類別菜數組    for (let i = 0; i < cai.length; i++) {      let c = cai[i];      for (let j = 0; j < c.length; j++) {        let num = c[j].num        let price = c[j].price;        //計算總商品數                allnum += num         //計算總價        total += num * price      }    }    this.setData({      allprice: total,      allnum: allnum    });  }, ``` 裡面都有註釋也不難看懂,就不解釋了!!! ### 註意一切已數據為中心!! ### 最後點擊去結算的跳轉 ``` //跳轉支付頁面  getAllprice() {    // console.log(this.data.shops)    //傳遞菜館名,總價    let title = this.data.shops.title;    let allprice = this.data.allprice;    let cainame = this.data.cainame;    if (this.data.allnum === 0) {      wx.showModal({        title: '商品為空!',        content: '您選擇商品了嗎?',      })      return    } else {      //商品數量不能為0      this.getAll()      wx.navigateTo({        url: '../pay/pay?allprice=' + allprice + '&title=' + title       })    }  } ``` 判斷一下是否有商品 在這裡傳遞的數據都可以帶入到支付頁面 ## 結束需要代碼請移步到我的github + https://github.com/cxy-js/wechat-shop
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 複習作用域 上一節我們說到作用域:是指變數可以訪問的範圍,他規定瞭如何查找變數,以及確定當前執行代碼對變數的訪問許可權;也說到靜態作用域即詞法作用域,是在編譯階段決定變數的引用(由程式定義的位置決定,和代碼執行順序無關,用嵌套的方式解析)。 凝問 如上代碼,在執行run函數時,在run作用域中有nam ...
  • 實現效果: 實現原理: // 步驟 // 1. 獲取事件源以及相關元素 // 2. 複製第一張圖片所在的li,添加到ul的最後面 // 3. 給ol添加li,ul中的個數-1個,並點亮第一個按鈕 // 4. 滑鼠放到ol的li上切換圖片 // 5. 添加定時器 // 6. 左右切換圖片(滑鼠放上去隱 ...
  • 前端分頁的Table配置函數 根據每行數據的一個欄位的值來改變行的背景色(class好像只能調用他本來預設的那幾個,很久之前寫的忘記了是不是這樣的) 這個是根據每行數據的一個欄位的值來是否禁用選擇框(我在之前項目需要做結算,已結算的和未結算的在一起,因此需要這個),formatter還可以寫別的函數 ...
  • 自己整理了一些關於前端這個行業面試題,好多都不會好難過,I NEED AV……. HTML&CSS 常用那幾種瀏覽器測試?有哪些內核(Layout Engine)? (Q1) 瀏覽器:IE,Chrome,FireFox,Safari,Opera。 (Q2) 內核:Trident,Gecko,Pres ...
  • 數據後端分頁排序,其實就是sql語句中oeder by做一些限制。 之前在寫sql語句中的order by是寫死,既然要寫活,就要傳參數到後臺。 之前講到bootstrapTable的queryParams可以自定義參數,這裡就只需要找下點擊需要排序列的欄位名就行 this.sortName 是排序 ...
  • Charles版本:4.0.2 一、開始 連接方式 方法一:電腦和手機連接同一個wifi 方法二:電腦使用網線連接網路,手機通過USB連接電腦 二、過濾網路請求 1.簡單過濾 在Sequence模式下,就可以看到Filter,輸入要過濾的關鍵字即可。 2.長期特定的網路封包 路徑:Proxy Rec ...
  • Generator 函數是協程在 ES6 的實現,最大特點就是可以交出函數的執行權(即暫停執行)參考鏈接:http://www.ruanyifeng.com/blog/2015/04/generator.html{ // genertaor基本定義 有一個星號有一個yield let tell = ... ...
  • 前幾日聽到一句生猛與激勵並存,可怕與尷尬同在,最無奈也無解的話:“90後,你的中年危機已經殺到”。這令我很受觸動。顯然,這有些誇張了,但就目前這日復一日的庸碌下去,眨眼的功夫,那情形就會在這骨感的現實面前,悄然的被顯現。所以,越發體驗到,當必要有計劃的去做,去寫,去玩,去嗨,利用好這荷爾蒙分泌還算旺 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...