3レベルの分類、上部のナビゲーションバー、左側の分類バー、右側のデータリストを実現するためのミニプログラムの3レベルのリンク

ブラザーストーンの記事を読んだり、ブラザーストーンのビデオを見たりした場合は、ブラザーストーンの注文アプレットが第2レベルの料理または製品分類を達成できることを知っておく必要があります。

下の図に示すように、
3レベルの分類、上部のナビゲーションバー、左側の分類バー、右側のデータリストを実現するためのミニプログラムの3レベルのリンク
3レベルの分類を実現したい場合がありますが、どうすればよいのでしょうか。今日は、3レベルの分類を実現する方法を説明します。Excelデータをクラウド開発データベースにバッチでインポートする方法をお気軽に教えてください

まず、古いルール、最初にレンダリングを見てください

3レベルの分類、上部のナビゲーションバー、左側の分類バー、右側のデータリストを実現するためのミニプログラムの3レベルのリンク
まず、すべての人の原則を分析しましょう

第二に、主成分分析

まず
3レベルの分類、上部のナビゲーションバー、左側の分類バー、右側のデータリストを実現するためのミニプログラムの3レベルのリンク
3つのレベルを分析しましょう。上部に第1レベルのメニュー、左側に第2レベルのメニュー、右側に最後の3レベルのリストがあることがわかります。

階層関係を管理しましょう

  • =寮の建物番号
  • ====寮番号
  • ========学生

賢い人は、私たちがたくさんの寮がある寮であり、寮にはたくさんの学生がいることを知っている必要があります。このように、私たちの3番目のレベルは建物番号「寮」の学生です。

建物番号を切り替えると、現在の建物番号に含まれている寮が取得されます。
たとえば、下の写真では、左が慧蘭ビル、右が雪源ビルのデータです。各ビルの寮と学生の情報を見ることができます。
3レベルの分類、上部のナビゲーションバー、左側の分類バー、右側のデータリストを実現するためのミニプログラムの3レベルのリンク
原理を分析した後、技術的な実現を見てみましょう。

三、分類データを取得する

まず、すべての情報を格納するためにテーブルを使用します。
3レベルの分類、上部のナビゲーションバー、左側の分類バー、右側のデータリストを実現するためのミニプログラムの3レベルのリンク
これはすべてのデータを格納するためのテーブルであるため、データに含まれる建物番号を確認するためにグループ化する必要があります。

3-1、グループの助けを借りて建物番号のグループ化を実現する(第1レベルのデータ)

ここに画像の説明を挿入
具体的なコードは次のとおりです
3レベルの分類、上部のナビゲーションバー、左側の分類バー、右側のデータリストを実現するためのミニプログラムの3レベルのリンク

次に得られたデータは次のとおり
3レベルの分類、上部のナビゲーションバー、左側の分類バー、右側のデータリストを実現するためのミニプログラムの3レベルのリンク
です。合計11の寮の建物があることがわかります。これらの領域は私たちの上にありますか
3レベルの分類、上部のナビゲーションバー、左側の分類バー、右側のデータリストを実現するためのミニプログラムの3レベルのリンク

3-2、グループと一致の助けを借りて寮のグループ化を実現する(第2レベルのデータ)

3レベルの分類、上部のナビゲーションバー、左側の分類バー、右側のデータリストを実現するためのミニプログラムの3レベルのリンク
現時点では、ユーザーが選択した建物番号に従って、現在の建物番号ですべてのデータをグループ化する
3レベルの分類、上部のナビゲーションバー、左側の分類バー、右側のデータリストを実現するためのミニプログラムの3レベルのリンク
必要
3レベルの分類、上部のナビゲーションバー、左側の分類バー、右側のデータリストを実現するためのミニプログラムの3レベルのリンク
があります。グループ化されたデータ次のように表示されます。銭津ビルには2つの寮があります。

3-3、whereの助けを借りて寮の学生データを取得する(レベル3)

3レベルの分類、上部のナビゲーションバー、左側の分類バー、右側のデータリストを実現するためのミニプログラムの3レベルのリンク
得られたデータは以下のとおりですので
3レベルの分類、上部のナビゲーションバー、左側の分類バー、右側のデータリストを実現するためのミニプログラムの3レベルのリンク
、ここで3段階の分類を実現します。

第四に、完全なプロジェクトコード

今すぐすべての人のために完全なプロジェクトコードを投稿してください

4-1、wxml

<!-- 导航栏 -->
<scroll-view scroll-x class="navbar" scroll-with-animation scroll-left="{{scrollLeft}}rpx">
  <view class="nav-item" wx:for="{{tabs}}" wx:key="id" bindtap="tabSelect" data-id="{{index}}">
    <view class="nav-text {{index==tabCur?'tab-on':''}}">{{item._id}}</view>
  </view>
</scroll-view>
<view class="container">
  <!-- 左边的  -->
  <scroll-view class='nav_left' scroll-y='true'>
    <block wx:for="{{lefts}}" wx:key="{{index}}">
      <view class="nav_left_items {{leftCur==index?'active':''}}" bindtap="switchLeftTab" data-index='{{index}}'>
        {{item._id}}</view>
    </block>
  </scroll-view>
  <!-- 右边的 -->
  <scroll-view class="nav_right" scroll-y="true">
    <view class="{{topx}}">
      <block wx:for="{{rights}}" wx:key="index">
        <view class="nav_right_items" data-id="{{item._id}}">
          <image src="{{item.touxiang}}"></image>
          <text>{{item.mingzi}}</text>
        </view>
      </block>
    </view>
  </scroll-view>
</view>

4-2、wxssスタイル

/* 导航栏布局相关 */
.navbar {
    width: 100%;
    height: 90rpx;
    /* 文本不换行 */
    white-space: nowrap;
    display: flex;
    box-sizing: border-box;
    border-bottom: 1rpx solid #eee;
    background: #fff;
    align-items: center;
    /* 固定在顶部 */
    position: fixed;
    left: 0rpx;
    top: 0rpx;
}

.nav-item {
    padding-left: 25rpx;
    padding-right: 25rpx;
    height: 100%;
    display: inline-block;
    /* 普通文字大小 */
    font-size: 28rpx;
}

.nav-text {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    letter-spacing: 4rpx;
    box-sizing: border-box;
}

.tab-on {
    color: #000080;
    /* 选中放大 */
    font-size: 38rpx !important;
    font-weight: 600;
    border-bottom: 4rpx solid #000080 !important;
}

/* 正文部分 */
.container {
    position: fixed;
    width: 100%;
    height: 90%;
    top: 100rpx;
    background-color: #FFF;
}

.nav_left {
    width: 25%;
    height: 100%;
    background: #F2F2F2;
    text-align: center;
    position: absolute;
    top: 0;
    left: 0;
}

.nav_left .nav_left_items {
    height: 100rpx;
    line-height: 100rpx;
    font-size: 28rpx;
}

.nav_left .nav_left_items.active {
    position: relative;
    background: #FFF;
    color: #000080;
}

.nav_left .nav_left_items.active::before {
    display: inline-block;
    width: 6rpx;
    height: 60rpx;
    background: #000080;
    content: '';
    position: absolute;
    top: 20rpx;
    left: 0;
}

.nav_right {
    position: absolute;
    top: 0;
    right: 0;
    width: 75%;
    height: 100%;
}

.nav_right .nav_right_items {
    float: left;
    width: 33.33%;
    text-align: center;
    padding: 30rpx 0;
}

.nav_right .nav_right_items image {
    width: 120rpx;
    height: 160rpx;
}

.nav_right .nav_right_items text {
    display: block;
    margin-top: 20rpx;
    font-size: 28rpx;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.nocate {
    padding: 100rpx;
    text-align: center;
}

.nocate image {
    width: 70rpx;
    height: 70rpx;
}

.nocate text {
    font-size: 28rpx;
    display: block;
    color: #BBB;
}

/*隐藏滚动条*/
::-webkit-scrollbar {
    width: 0;
    height: 0;
    color: transparent;
}

.topx {
    width: 90%;
    /* height: 700rpx; */
    margin: 30rpx auto;
    z-index: 1;
    border-radius: 10rpx;
    background-size: cover;
}

4-3、jsは分類ロジックを実装します

const db = wx.cloud.database()
const $ = db.command.aggregate
Page({
    data: {
        tabs: [],
        tabCur: 0, //默认选中
        lefts: [],
        leftCur: 0,
        rights: [],

    },
    onLoad: function (options) {
        db.collection('demo').aggregate()
            .group({
                _id: '$louhao'
            })
            .end()
            .then(res => {
                console.log('楼号列表', res)
                this.setData({
                    tabs: res.list
                })
                this.sushehao(res.list[0]._id)
            })
    },
    //加载当前楼号所有的宿舍号
    sushehao() {
        let louhao = this.data.tabs[this.data.tabCur]._id
        db.collection('demo').aggregate()
            .match({
                louhao
            })
            .group({
                _id: '$sushe'
            })
            .sort({
                sushe: -1 //宿舍号升序排列
            })
            .end()
            .then(res => {
                console.log(louhao + '宿舍号列表', res)
                this.setData({
                    lefts: res.list
                })
                this.xuesheng()
            })
    },
    //加载当前宿舍号里所有的学生
    xuesheng() {
        let louhao = this.data.tabs[this.data.tabCur]._id
        let sushe = this.data.lefts[this.data.leftCur]._id
        db.collection('demo')
            .where({
                louhao,
                sushe
            }).get()
            .then(res => {
                console.log(louhao + sushe + '室学生列表', res)
                this.setData({
                    rights: res.data
                })
            })
    },
    //顶部选择分类条目
    tabSelect(e) {
        this.setData({
            tabCur: e.currentTarget.dataset.id,
            scrollLeft: (e.currentTarget.dataset.id - 2) * 200
        }, success => {
            this.sushehao()
        })
    },
    //左侧条目选择
    switchLeftTab(e) {
        let index = e.target.dataset.index;
        this.setData({
            leftCur: index,
        }, success => {
            this.xuesheng()
        })
    },
})

4-4、データテーブルの権限を変更することを忘れないでください

読み取りすべてのユーザーのアクセス許可を変更し、
3レベルの分類、上部のナビゲーションバー、左側の分類バー、右側のデータリストを実現するためのミニプログラムの3レベルのリンク
ここで読み取りと書き込みができるユーザーのみを作成して、達成された3層分類を完了します。エクセルデータの一括インポートについては、次のセクションで説明します。注意を払うことを歓迎し、交換するメッセージを残すことを歓迎します。

おすすめ

転載: blog.51cto.com/14368928/2675201