MuiPicker – 完美的移動端多級聯選擇器控制項

在移動端開發中,我們往往需要讓用戶從多個層級中選擇某個特定的選項,這時候用到的就是多級聯選擇器。MuiPicker是一個非常好用的多級聯選擇器控制項,它通過簡單的配置就能夠方便地實現一個完全符合需求的多級聯選擇器。本文將從以下幾個方面對MuiPicker進行詳細介紹,包括基本用法、使用方法的幾個注意點、常用的配置項、以及自定義模板等。

一、基本用法

先來看一下基本的用法是怎樣的。首先引入所需的js和css文件:

<link rel="stylesheet" href="mui.picker.min.css">
<link rel="stylesheet" href="mui.picker.min.css">

然後在html代碼里寫上如下代碼:

<input type="text" id="picker">

在JS代碼里初始化一個picker對象,然後設置其data屬性:

var picker = new mui.PopPicker();
picker.setData([
    {
        value: '1',
        text: '選項1'
    },
    {
        value: '2',
        text: '選項2'
    },
    {
        value: '3',
        text: '選項3'
    }
]);

// 給輸入框添加事件監聽,點擊後彈出picker
document.getElementById('picker').addEventListener('tap', function() {
    picker.show(function(items) {
        // items[0].value: 選中的value值
        // items[0].text: 選中的文本值
    });
});

對於多級聯選擇,只需要在setData中傳入一個數組,數組中每個元素都是一個對象,對象中包含value和text等屬性:

picker.setData([
    {
        value: '1',
        text: '選項1',
        children: [
            {
                value: '11',
                text: '選項1-1'
            },
            {
                value: '12',
                text: '選項1-2'
            }
        ]
    },
    {
        value: '2',
        text: '選項2',
        children: [
            {
                value: '21',
                text: '選項2-1'
            },
            {
                value: '22',
                text: '選項2-2'
            }
        ]
    },
    {
        value: '3',
        text: '選項3',
        children: [
            {
                value: '31',
                text: '選項3-1'
            }
        ]
    }
]);

二、使用方法的幾個注意點

1.數據源改變後需要重新初始化

在設置完數據源之後,如果數據源發生了改變,需要重新初始化picker,例如:

picker.setData(newData);
picker.pickers[0].setSelectedIndex(0, 100);

2.多選模式下需要設定最大可選數量

覆蓋對象上的選項最大值,可自由穿梭。

picker = new mui.PopPicker({
    layer: 2
});
// 選項數據 source
picker.setData([{
    value: '01',
    text: '貴州省',
    children: [{
        value: "0101",
        text: "貴陽市",
        children: [{
            value: "001",
            text: "白雲區"
        }]
    }]
}]);
// 允許多選模式
picker.pickers[0].setOption("isMultiSelect", true);
// 開啟多選模式
picker.show(function(items) {
    var selectedItems = picker.getSelectedItems();
    console.log(selectedItems);
    alert(selectedItems.length + " items selected");
});

3.點擊遮罩層關閉picker

在picker出現時,給遮罩層添加事件監聽,當點擊遮罩層時關閉picker:

picker.show(function(items) {
    // ...
});
var mask = mui.createMask(function() {
    picker.dispose();
});
mask.show();

三、常用的配置項

1.value

picker的默認值,可以是一個字元串也可以是一個數組。

picker.pickers[0].setSelectedValue("1", 1000);

2.width

控制項寬度。

picker = new mui.PopPicker({
    layer: 2,
    width: "50%"
});

3.height

控制項高度。

picker = new mui.PopPicker({
    layer: 2,
    height: '200px'
});

4.title

picker頂部的標題。

picker = new mui.PopPicker({
    layer: 2,
    title: '請選擇地區'
});

5.buttons

picker頂部的按鈕,參考mui的”buttons”對象設置。

picker = new mui.PopPicker({
    layer: 2,
    buttons: ['取消', '確定']
});

6.onChange

在選中項改變時觸發的回調函數。

picker = new mui.PopPicker({
    layer: 2,
    onChange: function(picker, selectedIndex, selectedValue) {
        console.log(selectedIndex, selectedValue);
    }
});

四、自定義模板

在使用MuiPicker的過程中,我們也可以根據自己的需求來自定義選擇器的外觀。具體而言,我們可以通過改變模板的方式,來實現外觀的不同。以下為一個自定義模板的示例:

<div id="custom-picker">
    <div class="mui-poppicker-header">
        <button class="mui-btn mui-poppicker-btn-cancel mui-action-back">取消</button>
        <h4 class="mui-poppicker-title">自定義標題</h4>
        <button class="mui-btn mui-poppicker-btn-ok mui-action-forward">確認</button>
    </div>
    <div class="mui-poppicker-body">
        <div class="mui-poppicker-body-content">
            <div class="custom-picker-list first-list">
                <ul>
                    <li class="mui-table-view-cell">北京</li>
                    <li class="mui-table-view-cell">上海</li>
                    <li class="mui-table-view-cell">廣州</li>
                    <li class="mui-table-view-cell">深圳</li>
                    <li class="mui-table-view-cell">杭州</li>
                </ul>
            </div>
            <div class="custom-picker-list second-list">
                <ul>
                    <li class="mui-table-view-cell">東城區</li>
                    <li class="mui-table-view-cell">西城區</li>
                    <li class="mui-table-view-cell">朝陽區</li>
                    <li class="mui-table-view-cell">海淀區</li>
                    <li class="mui-table-view-cell">丰台區</li>
                </ul>
            </div>
        </div>
    </div>
</div>

通過以下代碼來實現一個基於自定義模板的picker:

var customPicker = new mui.PopPicker({
    layer: 2
});
customPicker.setData([
    {
        value: '1',
        text: 'Custom'
    }
]);
document.getElementById('show-custom-picker-btn').addEventListener('tap', function(event) {
    customPicker.show(function(items) {
        console.log(items);
    });
    event.stopPropagation();
});

以上就是使用MuiPicker實現多級聯選擇器的詳細內容,如果需要更多的細節和參數,請查看mui官方文檔。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/152399.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-12 00:57
下一篇 2024-11-12 00:57

相關推薦

  • KeyDB Java:完美的分散式高速緩存方案

    本文將從以下幾個方面對KeyDB Java進行詳細闡述:KeyDB Java的特點、安裝和配置、使用示例、性能測試。 一、KeyDB Java的特點 KeyDB Java是KeyD…

    編程 2025-04-29
  • Python ttk控制項用法介紹

    本文將從多個方面對Python ttk控制項進行詳細闡述,旨在幫助開發者更好的使用和理解這一控制項。 一、ttk控制項概述 ttk控制項是Python tkinter模塊中的一個擴展模塊,…

    編程 2025-04-27
  • 周杰倫的花海:音樂與自然的完美融合

    周杰倫的花海,是指由周杰倫私人投資興建、位於上海市奉賢區四團鎮李家漕村的一個純生態主題公園。該公園以親近自然、體驗自然為主,植被種類豐富、景色宜人,是市區人們放鬆身心、回歸自然的好…

    編程 2025-04-27
  • Java Tomcat:Web應用程序的完美容器

    一、淺談Tomcat Tomcat,全稱為Apache Tomcat,是一個免費的、開源的Java Servlet容器,而Java Servlet是一種伺服器端的Java擴展程序,…

    編程 2025-04-25
  • 探究lodop列印控制項

    一、簡介 lodop列印控制項是一款適用於各種瀏覽器的列印控制插件,可用於快速、簡便地實現各種列印任務。它支持多種輸出方式,如列印、預覽、保存至PDF等,在各種行業中都被廣泛應用。 …

    編程 2025-04-25
  • 深入了解uniapptextarea控制項

    uniapptextarea控制項是uniapp框架中非常常用的組件之一,在開發中經常會用到。本文將從多個方面對uniapptextarea做詳細的闡述。 一、基本用法 uniapp…

    編程 2025-04-24
  • Qt 自定義控制項詳解

    一、Qt自定義控制項簡介 Qt是一種用於開發跨平台軟體的應用程序框架,它提供了一組用於構建用戶界面、網路應用程序和資料庫等方面的工具。 Qt自定義控制項是指在當前控制項基礎上進行一定修改…

    編程 2025-04-23
  • SelectPage控制項詳解

    隨著互聯網技術的快速發展,不斷湧現出越來越多的前端框架和插件。其中,SelectPage控制項作為一款開源的、輕量級的、易用的下拉列表選擇器插件,備受前端開發人員關注和喜愛。 一、功…

    編程 2025-04-23
  • 詳解.some選擇器

    在CSS中,選擇器用於找到要應用樣式的元素。其中,.some選擇器是一個非常強大的選擇器,它可以選擇網頁中所有帶有「some」類名的元素。下面我們將從多個方面來詳細闡述.some選…

    編程 2025-04-23
  • JTextField:Java中常見的文本輸入框控制項

    JTextField是Java Swing控制項庫中的一種常見的用於文本輸入的控制項,它提供了許多實用的特性與靈活的可擴展性。在本文中,我們將從多個方面對JTextField進行詳細的…

    編程 2025-04-22

發表回復

登錄後才能評論