<var id="5nnbh"></var>
<var id="5nnbh"></var>

      <dfn id="5nnbh"></dfn>

      <mark id="5nnbh"></mark>

      <sub id="5nnbh"><progress id="5nnbh"></progress></sub>

        小程序資訊

        商城小程序購物車左滑和長按刪除商品

        小程序開發問題 2019-02-12 16:52:31 | 閱讀:6196 | 作者:方維網絡 | 標簽:商城小程序    

        商城小程序由于其易于在微信推廣,已經完全取代微商城了,以下方維網絡分享如何在購物車里實現左滑和長按刪除商品的功能實現。

        商城小程序購物車

        微信小程序沒有APP那種直接左滑彈出按鈕的功能,所以要實現左滑刪除需要自己寫代碼!

        初始方案有幾個:

        1、使用view組件通過定位來實現;
        2、通過scroll_view組件實現;
        3、通過組件movable-view來實現;

        通過對比發現,第三種方案用戶體驗最好,滑動起來非常流暢,當滑動比較小時還可以回到初始狀態。

        大概思路如下,
        movable-area里面放置購物車信息,然后刪除按鈕采用絕對定位在右邊,正常情況下刪除按鈕被覆蓋,當滑動時顯示。

        wxml代碼如下

        wxml代碼

        CSS代碼如下

        CSS代碼

        JS代碼如下

        showDeleteButton: function (e) {
        let productIndex = e.currentTarget.dataset.productindex
        this.setXmove(productIndex, -150)
        },
        /**
        * 隱藏刪除按鈕
        */
        hideDeleteButton: function (e) {
        let productIndex = e.currentTarget.dataset.productindex
        this.setXmove(productIndex, 0)
        },
        /**
        * 設置movable-view位移
        */
        setXmove: function (productIndex, xmove) {
        let carts = this.data.carts
        console.log('xmove:'+xmove)
        carts[productIndex].xmove = xmove
        this.setData({
        carts: carts
        })
        },
        /**
        * 處理movable-view移動事件
        */
        handleMovableChange: function (e) {
        if (e.detail.source === 'friction') {
        if (e.detail.x < -30) {
        this.showDeleteButton(e)
        } else {
        this.hideDeleteButton(e)
        }
        } else if (e.detail.source === 'out-of-bounds' && e.detail.x === 0) {
        this.hideDeleteButton(e)
        }
        }

        通過以上即可實現左滑彈出刪除按鈕 從而刪除商品的功能,
        下面講解如何通過長按刪除商品。

        主要通過事件
        bindlongtap="del_cart" bindtouchstart="mytouchstart" bindtouchend="mytouchend"

        因為bindlongtap有點的BUG,會觸發單擊事件,所以需要在單擊事件中判斷是長按還是單擊,

        代碼如下

        mytouchstart: function (e) { //按下事件開始 用于判斷單擊還是長按
        let that = this;
        that.setData({
        touch_start: e.timeStamp
        })
        //console.log(e.timeStamp + '- touch-start')
        },
        mytouchend: function (e) { //按下事件結束 用于判斷單擊還是長按
        let that = this;
        that.setData({
        touch_end: e.timeStamp
        })
        //console.log(e.timeStamp + '- touch-end')
        }

        方維網絡專注于商城小程序定制開發,歡迎有需求客戶咨詢我們客服。

        中文字幕一精品亚洲无线_色欲香天天综合免费区一区二_国产婷婷VR18资源_一本色道久久综合

        <var id="5nnbh"></var>
        <var id="5nnbh"></var>

            <dfn id="5nnbh"></dfn>

            <mark id="5nnbh"></mark>

            <sub id="5nnbh"><progress id="5nnbh"></progress></sub>