検索
ホームページWeChat アプレットWeChatの開発WeChatミニプログラムにショッピングカート機能を実装

はじめに

これまで、ショッピング カートは基本的に多数の DOM 操作を通じて実装されていました。 WeChat アプレットは実際には vue.js の使用方法とよく似ています。次に、アプレットがショッピング カート機能を実装する方法を見てみましょう。

要件

まず、ショッピング カートのニーズを把握しましょう。

  • #単一選択、全選択とキャンセル、選択した商品に応じて合計金額が計算されます

  • 単一の購入数量商品の増加と削減

  • #アイテムの削除。ショッピング カートが空の場合、ページは空のショッピング カートのレイアウトに変更されます。
  • 設計図によると、まず静的ページを実装できます。次に、ショッピング カートに必要なデータの種類を見てみましょう。

    最初は商品リスト(カート)で、リスト内の項目は商品画像(image)、商品名(title)、単価(price)、数量(num)です。 、選択されているかどうか (選択されているかどうか)、プロダクト ID (id)
  • を選択し、左下隅ですべてを選択します。すべてが選択されているかどうかを示すフィールド (selectAllStatus) が必要です
  • 右下隅の合計価格 (totalPrice)
  • 最後に、ショッピング カートが空かどうかを知る必要があります (hasList)
  • #必要なものはわかっています。データ、ページが初期化されるときに最初にこれらを定義します。
コード実装

初期化

Page({
    data: {
        carts:[],               // 购物车列表
        hasList:false,          // 列表是否有数据
        totalPrice:0,           // 总价,初始为0
        selectAllStatus:true    // 全选状态,默认全选
    },
    onShow() {
        this.setData({
          hasList: true,        // 既然有数据了,那设为true吧
          carts:[
            {id:1,title:'新鲜芹菜 半斤',image:'/image/s5.png',num:4,price:0.01,selected:true},
            {id:2,title:'素米 500g',image:'/image/s6.png',num:1,price:0.03,selected:true}
          ]
        });
      },
})
通常、ショッピングカートのリストデータはサーバーにリクエストして取得するので、ライフサイクル関数でカートに値を割り当てます。ショッピングカートに入るたびにショッピングカートの最新ステータスを取得しようと考えたのですが、onLoadとonReadyは初期化時に1回しか実行されないので、onShow関数にリクエストを入れる必要があります。 (ここでは偽データのふりをしてみます)

Layout wxml

前に書いた静的ページを修復し、データをバインドします。

 <view>
    <!-- wx:for 渲染购物车列表 -->
    <view>
    
        <!-- wx:if 是否选择显示不同图标 -->
        <icon></icon>
        <icon></icon>
        
        <!-- 点击商品图片可跳转到商品详情 -->
        <navigator>
            <image></image>
        </navigator>
        
        <text>{{item.title}}</text>
        <text>¥{{item.price}}</text>
        
        <!-- 增加减少数量按钮 -->
        <view>
            <text>-</text>
            <text>{{item.num}}</text>
            <text>+</text>
        </view>
        
        <!-- 删除按钮 -->
        <text> × </text>
    </view>
</view>

<!-- 底部操作栏 -->
<view>
    <!-- wx:if 是否全选显示不同图标 -->
    <icon></icon>
    <icon></icon>
    <text>全选</text>
    
    <!-- 总价 -->
    <text>¥{{totalPrice}}</text>
</view>
合計価格を計算します

合計価格 = 選択した製品の価格 1 * 選択した製品の価格 2 * 数量...

式によると、

getTotalPrice() {
    let carts = this.data.carts;                  // 获取购物车列表
    let total = 0;
    for(let i = 0; i<carts.length> <p>合計価格を変更するページ上の他の操作では、このメソッドを呼び出す必要があります。 <br></p>選択イベント<p></p>クリックすると選択され、もう一度クリックすると選択が解除され、実際には選択フィールドが変更されます。 data-index="{{index}}" を渡して、リスト配列内の現在の製品のインデックスをイベントに渡します。 <p></p>
<pre class="brush:php;toolbar:false"><p>selectList(e) {<br>    const index = e.currentTarget.dataset.index;    // 获取data- 传进来的index<br>    let carts = this.data.carts;                    // 获取购物车列表<br>    const selected = carts[index].selected;         // 获取当前商品的选中状态<br>    carts[index].selected = !selected;              // 改变状态<br>    this.setData({<br>        carts: carts<br>    });<br>    this.getTotalPrice();                           // 重新获取总价<br>}<br></p>
すべてのイベントを選択

すべて選択とは、全選択状態に応じて各商品の選択内容を変更する selectAllStatus

<p>selectAll(e) {<br>    let selectAllStatus = this.data.selectAllStatus;    // 是否全选状态<br>    selectAllStatus = !selectAllStatus;<br>    let carts = this.data.carts;<br><br>    for (let i = 0; i         carts[i].selected = selectAllStatus;            // 改变所有商品状态<br>    }<br>    this.setData({<br>        selectAllStatus: selectAllStatus,<br>        carts: carts<br>    });<br>    this.getTotalPrice();                               // 重新获取总价<br>}<br></p>
数量を増減する

数字をクリックし、num に 1 を加え、- 記号をクリックします。num > 1 の場合、1 を減算します

<p>// 增加数量<br>addCount(e) {<br>    const index = e.currentTarget.dataset.index;<br>    let carts = this.data.carts;<br>    let num = carts[index].num;<br>    num = num + 1;<br>    carts[index].num = num;<br>    this.setData({<br>      carts: carts<br>    });<br>    this.getTotalPrice();<br>},<br>// 减少数量<br>minusCount(e) {<br>    const index = e.currentTarget.dataset.index;<br>    let carts = this.data.carts;<br>    let num = carts[index].num;<br>    if(num       return false;<br>    }<br>    num = num - 1;<br>    carts[index].num = num;<br>    this.setData({<br>      carts: carts<br>    });<br>    this.getTotalPrice();<br>}<br></p>
商品を削除

削除ボタンをクリックして、ショッピングから現在の要素を削除します削除後、ショッピング カートが空の場合は、ショッピング カート空フラグ hasList を false に変更します

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              // 修改标识为false,显示购物车为空页面
        });
    }else{                              // 如果不为空
        this.getTotalPrice();           // 重新计算总价格
    }   
}
要約

ショッピング カート機能は比較的単純ですが、まだ多くの知識が必要です。 WeChat アプレットに関連するポイント。これは初心者がマスターするのに適した練習です。

推奨チュートリアル: 「

WeChat ミニ プログラム

以上がWeChatミニプログラムにショッピングカート機能を実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は博客园で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール