찾다
위챗 애플릿미니 프로그램 개발WeChat 애플릿에서 장바구니 기능을 구현하는 방법은 무엇입니까? (방법 소개)

WeChat 애플릿에서 장바구니 기능을 구현하는 방법은 무엇입니까? 다음 기사에서는 WeChat 애플릿에서 장바구니 기능을 구현하는 방법을 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

WeChat 애플릿에서 장바구니 기능을 구현하는 방법은 무엇입니까? (방법 소개)

쇼핑몰이든 케이터링 미니프로그램이든 주문을 해야만 거래가 완료되기 때문에 장바구니에 담는 작업이 있습니다. 기존에는 장바구니 기능을 기본적으로 다수의 DOM 연산을 통해 구현했지만, 애플릿은 웹 기반이 아니기 때문에 DOM을 생성할 수 없었습니다. WeChat 애플릿은 장바구니 기능을 구현합니다사실 vue.js의 사용법과 매우 유사합니다.

먼저 장바구니의 요구 사항을 파악해 보겠습니다.

단일선택, 전체선택 및 취소, 그리고 선택한 상품에 따라 총금액이 계산됩니다

단일 상품의 구매수량이 늘어나거나 줄어듭니다

상품을 삭제하세요. 장바구니가 비어 있으면 페이지는 빈 장바구니의 레이아웃으로 변경됩니다

디자인 도면에 따라 먼저 정적 페이지를 구현할 수 있습니다. 다음으로 장바구니에는 어떤 데이터가 필요한지 살펴보겠습니다.

첫 번째는 제품 목록(카트)입니다. 목록에 있는 단일 제품에는 제품 이미지(이미지), 제품 이름(제목), 단가(가격), 수량(숫자), 선택 여부(선택됨), 제품 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는 초기화 시 한 번만 실행되므로 onShow 함수에 요청을 넣어야 합니다.

총 가격 계산

총 가격 = 선택한 상품의 가격 1 * 수량 + 선택한 상품의 가격 2 * 수량 + ...

공식에 따라

getTotalPrice() {
    let carts =this.data.carts;                  // 获取购物车列表
    let total = 0;
    for(let i = 0;i<carts.length; i++)="{        =" 循环列表得到每个数据<="span=" style=";padding: 0px">
        if(carts[i].selected){                   // 判断选中才会计算价格
            total +=carts[i].num * carts[i].price;     // 所有价格加起来
        }
    }
    this.setData({                                // 最后赋值到data中渲染到页面
        carts: carts,
        totalPrice:total.toFixed(2)
    });
}

다른 작업을 얻을 수 있습니다. 총 가격이 변경될 때마다 이 메소드를 호출해야 합니다.

이벤트 선택

클릭하면 선택되고, 다시 클릭하면 선택 해제됩니다. 실제로는 선택한 필드가 변경됩니다. 목록 배열에 있는 현재 제품의 인덱스를 이벤트에 전달하려면 data-index="{{index}}"를 전달합니다.

selectList(e) {
    const index =e.currentTarget.dataset.index;    // 获取data- 传进来的index
    let carts =this.data.carts;                    // 获取购物车列表
    const selected =carts[index].selected;         // 获取当前商品的选中状态
    carts[index].selected= !selected;              // 改变状态
    this.setData({
        carts: 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++) {
        carts[i].selected = selectAllStatus;            // 改变所有商品状态
    }
    this.setData({
        selectAllStatus:selectAllStatus,
        carts: carts
    });
   this.getTotalPrice();                               // 重新获取总价
}

전체 선택 상태에 따라 각 제품의 수량을 늘리거나 줄입니다. selectAllStatus

+ 기호를 클릭하고 숫자를 1씩 추가하고, - 기호를 클릭하고 num > 1인 경우 1을 뺍니다.

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

제품 삭제

삭제 버튼을 클릭하면 장바구니 목록에서 현재 요소가 삭제됩니다. 삭제 후 장바구니가 비어 있으면 장바구니 빈 플래그 hasList to 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();           //重新计算总价格
    }  
}

Applet 장바구니 기능 개발은 각 기능 모듈을 분리하여 별도로 개발하는데, 이는 기본적으로 웹 페이지 및 APP 측의 개발 아이디어와 동일합니다. 장바구니 기능은 비교적 간단하지만 WeChat 애플릿에는 여전히 많은 지식 포인트가 있습니다.

추천: "Mini 프로그램 개발 튜토리얼"

위 내용은 WeChat 애플릿에서 장바구니 기능을 구현하는 방법은 무엇입니까? (방법 소개)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 即速资讯에서 복제됩니다. 침해가 있는 경우 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 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구