最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

微信小程序使用picker組件出現(xiàn)的問(wèn)題探究

 更新時(shí)間:2023年01月12日 16:11:10   作者:code_充電站  
這篇文章主要介紹了微信小程序自定義可搜索的picker組件,主要包括自定義可搜索的picker組件的代碼以及調(diào)用實(shí)例,這里的搜索框使用的是vant微信小程序組件庫(kù),picker使用的微信小程序的原生組件,需要的朋友可以參考下

一、picker基本概念

先來(lái)看一下官方文檔中picker的基本概念:

從底部彈起的滾動(dòng)選擇器,現(xiàn)支持三種選擇器,通過(guò)mode來(lái)區(qū)分,分別是普通選擇器,時(shí)間選擇器,日期選擇器,默認(rèn)是普通選擇器。

重要屬性

  • range: 選取范圍,數(shù)據(jù)類型為Array / Object Array,mode為 普通選擇器 時(shí),range 有效;
  • value: value 的值表示選擇了 range 中的第幾個(gè)(下標(biāo)從 0 開(kāi)始),數(shù)據(jù)類型肯定是Number;
  • bindchange: 綁定事件,value 改變時(shí)觸發(fā) change 事件,event.detail = {value: value}。
  • mode:選擇器類型,可以是selector( 普通選擇器)、multiSelector(多列選擇器)、date(時(shí)間選擇器)、time(日期選擇器)、region(省市區(qū)選擇器);

二、遇到的問(wèn)題

問(wèn)題說(shuō)在前面,同一個(gè)頁(yè)面使用多個(gè)普通選擇器遇到了問(wèn)題,選擇一個(gè)選項(xiàng),其他選項(xiàng)也跟隨著改變了。

代碼如下:

//picker.wxml:   
<view class="column_list" >
        <text class="font15">選項(xiàng)一</text>
        <picker class="inputText" bindchange="bindchange1" value="{{index}}" range="{{option1}}">
            <view class="select_picker">
                {{option1[index]}}
                <image  mode="aspectFit"  class="select_arrow" src="../../images/select_arrow.png"></image>
            </view>
        </picker>
    </view>
    <view class="column_list" >
        <text class="font15">選項(xiàng)二</text>
        <picker class="inputText" bindchange="bindchange1" value="{{index}}" range="{{option2}}">
            <view class="select_picker">
                {{option2[index]}}
                <image  mode="aspectFit"  class="select_arrow" src="../../images/select_arrow.png"></image>
            </view>
        </picker>
    </view>
    <view class="column_list" >
        <text class="font15">選項(xiàng)三</text>
        <picker class="inputText" bindchange="bindchange1" value="{{index}}" range="{{option3}}">
            <view class="select_picker">
                {{option3[index]}}
                <image  mode="aspectFit"  class="select_arrow" src="../../images/select_arrow.png"></image>
            </view>
        </picker>
    </view>
//picker.js
    Page({
    data: {
        index:0,//設(shè)置索引值默認(rèn)為0
        option1: ['1', '2', '3','4','5'],
        option2: ['一', '二', '三','四','五'],
        option3: ['①', '②', '③','④','⑤'],
    },
    bindchange1:function (e) {
       // console.log('picker發(fā)送選擇改變,攜帶值為', e.detail.value)
       // 設(shè)置這個(gè)攜帶值賦值給索引值index
       // 所以option1 ,option2 ,option3的索引值都是一樣的
        this.setData({
            index: e.detail.value
        })
    }
})

因?yàn)槟J(rèn)索引值(也叫“下標(biāo)”)都是index,綁定事件也只是改變了index。所以改變一個(gè)選項(xiàng),其他選項(xiàng)都跟著改變了。

三、如何解決

首先想到的解決辦法就是自定義不同的索引值index1、index2,、index3,分別綁定不同的時(shí)間bindchange1、bindchange2、bindchange3改變其對(duì)應(yīng)的索引值。

代碼如下:

//picker.wxml: 
 <view class="column_list" >
        <text class="font15">選項(xiàng)一</text>
        <picker class="inputText" bindchange="bindchange1" value="{{index1}}" range="{{option1}}">
            <view class="select_picker">
                {{option1[index1]}}
                <image  mode="aspectFit"  class="select_arrow" src="../../images/select_arrow.png"></image>
            </view>
        </picker>
    </view>
    <view class="column_list" >
        <text class="font15">選項(xiàng)二</text>
        <picker class="inputText" bindchange="bindchange2" value="{{index2}}" range="{{option2}}">
            <view class="select_picker">
                {{option2[index2]}}
                <image  mode="aspectFit"  class="select_arrow" src="../../images/select_arrow.png"></image>
            </view>
        </picker>
    </view>
    <view class="column_list" >
        <text class="font15">選項(xiàng)三</text>
        <picker class="inputText" bindchange="bindchange3" value="{{index3}}" range="{{option3}}">
            <view class="select_picker">
                {{option3[index3]}}
                <image  mode="aspectFit"  class="select_arrow" src="../../images/select_arrow.png"></image>
            </view>
        </picker>
    </view>
    // picker.js
    Page({
    data: {
        index1:0,
        index2:0,
        index3:0,
        option1: ['1', '2', '3','4','5'],
        option2: ['一', '二', '三','四','五'],
        option3: ['①', '②', '③','④','⑤'],
    },
    bindchange1:function (e) {
        this.setData({
            index1: e.detail.value
        })
    },
    bindchange2:function (e) {
        this.setData({
            index2: e.detail.value
        })
    },
    bindchange3:function (e) {
        this.setData({
            index3: e.detail.value
        })
    }
})

這樣一個(gè)頁(yè)面多個(gè)picker的問(wèn)題就解決了,但是現(xiàn)在又發(fā)現(xiàn)了一個(gè)新的問(wèn)題:

為什么多個(gè)picker會(huì)出現(xiàn)相互影響的問(wèn)題?比如在第一個(gè)選擇器選擇了3,剩下的選擇器點(diǎn)進(jìn)去默認(rèn)都是從第3個(gè)開(kāi)始?” 小程序開(kāi)發(fā)工具中的確存在,看了社區(qū)的帖子,才知道這個(gè)是官方的bug,目前還沒(méi)有修復(fù)。

四、延伸

在這里使用了多個(gè)picker,可以想到使用wx:for循環(huán),那么為了渲染方便,數(shù)據(jù)就要修改為對(duì)象的數(shù)組。

// picker.js
Page({
    data: {
    //每個(gè)對(duì)象就是一個(gè)選擇器,有自己的索引值index,標(biāo)題title,選項(xiàng)option(又是一個(gè)數(shù)組)
        objArray:[
            {
                index:0,
                title:'選項(xiàng)一',
                option: ['1', '2', '3','4','5'],
            },
            {
                index:0,
                title:'選項(xiàng)二',
                option: ['一', '二', '三','四','五'],
            },
            {
                index:0,
                title:'選項(xiàng)三',
                option: ['①', '②', '③','④','⑤']
            },
        ]
    },
    // 綁定事件,因?yàn)椴荒苡胻his.setData直接設(shè)置每個(gè)對(duì)象的索引值index。
    // 所以用自定義屬性current來(lái)標(biāo)記每個(gè)數(shù)組對(duì)象的下標(biāo)
    bindChange_select: function(ev) {
    // 定義一個(gè)變量curindex 儲(chǔ)存觸發(fā)事件的數(shù)組對(duì)象的下標(biāo)
        const curindex = ev.target.dataset.current
    // 根據(jù)下標(biāo) 改變?cè)摂?shù)組對(duì)象中的index值
        this.data.objArray[curindex].index = ev.detail.value
    // 把改變某個(gè)數(shù)組對(duì)象index值之后的全新objArray重新 賦值給objArray
        this.setData({
            objArray: this.data.objArray
        })
    }
})

wx:for綁定數(shù)組objArray,當(dāng)前項(xiàng)的下標(biāo)變量名默認(rèn)為index,數(shù)組當(dāng)前項(xiàng)的變量名默認(rèn)為item,為了區(qū)分選項(xiàng)option中的下標(biāo)

使用 wx:for-item 可以指定數(shù)組當(dāng)前元素的變量名為itm,使用 wx:for-index 可以指定數(shù)組當(dāng)前下標(biāo)的變量名為idx。

關(guān)鍵點(diǎn)是:自定義一個(gè)屬性對(duì)應(yīng)當(dāng)前下標(biāo) data-current=“{{idx}}”,綁定事件bindChange_select觸發(fā)時(shí)判斷出是哪個(gè)數(shù)組對(duì)象觸發(fā)的,就改變?cè)摂?shù)組對(duì)象中的index值。

//picker.wxml:
 <view class="column_list mt_10" wx:for="{{objArray}}" wx:for-item="itm"  wx:for-index="idx" >
        <text class="font15">{{itm.title}} </text>
        <picker  class="inputText"  bindchange="bindChange_select" value="{{itm.index}}" data-current="{{idx}}" range="{{itm.option}}" >
            <view class="select_picker">
                 {{itm.option[itm.index]}}
                <image  mode="aspectFit"  class="select_arrow" src="../../images/select_arrow.png"></image>
            </view>
        </picker>
    </view>

五、效果圖

到此這篇關(guān)于微信小程序使用picker組件出現(xiàn)的問(wèn)題探究的文章就介紹到這了,更多相關(guān)小程序picker組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript代碼異常監(jiān)控實(shí)現(xiàn)過(guò)程詳解

    JavaScript代碼異常監(jiān)控實(shí)現(xiàn)過(guò)程詳解

    這篇文章主要介紹了JavaScript代碼異常監(jiān)控實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • webpack 中 chunks配置和使用詳解

    webpack 中 chunks配置和使用詳解

    chunks 的概念與 Webpack 的代碼分割(Code Splitting)功能密切相關(guān),通過(guò) optimization.splitChunks 配置項(xiàng)可以實(shí)現(xiàn)對(duì)代碼塊的分類和優(yōu)化,下面給大家介紹webpack 中 chunks配置和使用詳解,感興趣的朋友一起看看吧
    2025-04-04
  • Bootstrap網(wǎng)格系統(tǒng)詳解

    Bootstrap網(wǎng)格系統(tǒng)詳解

    bootstrap框架中的網(wǎng)格系統(tǒng)就是將容器平分成12份,在使用的時(shí)候可以根據(jù)實(shí)際情況重新編譯LESS/SASS源碼來(lái)修改12這個(gè)數(shù)值。接下來(lái)通過(guò)本文給大家介紹Bootstrap網(wǎng)格系統(tǒng),感興趣的朋友一起學(xué)習(xí)
    2016-04-04
  • JavaScript實(shí)現(xiàn)圖片瀑布流和底部刷新

    JavaScript實(shí)現(xiàn)圖片瀑布流和底部刷新

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)圖片瀑布流和底部刷新,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • js中用事實(shí)證明cssText性能高的問(wèn)題

    js中用事實(shí)證明cssText性能高的問(wèn)題

    首先要感謝 EtherDream 的不同觀點(diǎn),在 巧用cssText屬性批量操作樣式 一篇中由于他的質(zhì)疑態(tài)度使我做了進(jìn)一步的測(cè)試。
    2011-03-03
  • 基于JS實(shí)現(xiàn)父組件的請(qǐng)求服務(wù)過(guò)程解析

    基于JS實(shí)現(xiàn)父組件的請(qǐng)求服務(wù)過(guò)程解析

    這篇文章主要介紹了基于JS實(shí)現(xiàn)父組件的請(qǐng)求服務(wù)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 基于Bootstrap框架菜鳥入門教程(推薦)

    基于Bootstrap框架菜鳥入門教程(推薦)

    下面小編就為大家?guī)?lái)一篇基于Bootstrap框架菜鳥入門教程(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • js數(shù)組合并的8種方法(最全)

    js數(shù)組合并的8種方法(最全)

    在JavaScript中,有多種方法可以合并數(shù)組,本文主要介紹了8種方法,主要包括concat()、spread operator、push()、unshift()、splice()、Array.from()、Array.prototype.reduce()和ES6的Array.prototype.flat(),感興趣的可以了解一下
    2023-08-08
  • javascript基本數(shù)據(jù)類型和對(duì)象類型歸檔問(wèn)題解析

    javascript基本數(shù)據(jù)類型和對(duì)象類型歸檔問(wèn)題解析

    這篇文章主要介紹了javascript基本數(shù)據(jù)類型和對(duì)象類型歸檔,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • bootstrap實(shí)現(xiàn)的自適應(yīng)頁(yè)面簡(jiǎn)單應(yīng)用示例

    bootstrap實(shí)現(xiàn)的自適應(yīng)頁(yè)面簡(jiǎn)單應(yīng)用示例

    這篇文章主要介紹了bootstrap實(shí)現(xiàn)的自適應(yīng)頁(yè)面簡(jiǎn)單應(yīng)用,結(jié)合具體實(shí)例形式分析了基于bootstrap的列表布局結(jié)構(gòu)頁(yè)面實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下
    2017-03-03

最新評(píng)論

衡南县| 民权县| 葫芦岛市| 新绛县| 天峨县| 隆尧县| 汉寿县| 枞阳县| 辉县市| 丹东市| 新泰市| 双牌县| 大方县| 宁陕县| 那曲县| 屏南县| 德清县| 穆棱市| 彭水| 营口市| 平谷区| 赤城县| 衡水市| 九龙县| 娄烦县| 当阳市| 新昌县| 平昌县| 夏邑县| 陕西省| 全州县| 淳安县| 澄迈县| 包头市| 榕江县| 龙口市| 信宜市| 萝北县| 莎车县| 进贤县| 屏山县|