ミニプログラムは九公格インターフェースのナビゲーションを実現します

不言
リリース: 2018-06-27 17:21:44
オリジナル
2803 人が閲覧しました

この記事では主に小規模なプログラム開発の実際、つまり九公歌インターフェースのナビゲーションを実現するためのコード実装について紹介します。興味のある方はぜひ学んでください。

ミニプログラムはWeChat上で開発されており、より使いやすくするために、ナビゲーションとして9マスのグリッドインターフェースを使用したいことがよくあります。

単純に考えると、九公グリッドは3行3列で、行を単位として各行を3列に分割すれば大丈夫でしょうか?実践してみましょう。

まず、9 グリッド データの生成を考えてみましょう。各グリッドにはアイコン、タイトル、および簡単にジャンプできるルートが必要です。そのため、1 次元配列を定義するだけです。後続の構成をより適切に実行するために、この配列をファイル Routes.js に分割し、index.js ページでそれを参照し、インデックス ディレクトリにルートを配置します。

var PageItems = 
 [ 
  { 
   text: '格子1', 
   icon: '../../images/c1.png', 
   route: '../c1/c1', 
  }, 
  { 
   text: '格子2', 
   icon: '../../images/c2.png', 
   route: '../c2/c2', 
  }, 
   { 
   text: '格子3', 
   icon: '../../images/c3.png', 
   route: '../c3/c3', 
  }, 
  { 
   text: '格子4', 
   icon: '../../images/c4.png', 
   route: '../c4/c4', 
  }, 
  { 
   text: '格子5', 
   icon: '../../images/c5', 
   route: '../c5/c5', 
  }, 
  { 
   text: '格子6', 
   icon: '../../images/c6.png', 
   route: '../c6/c6', 
  }, 
  { 
   text: '格子7', 
   icon: '../../images/c7.png', 
   route: '../c7/c7', 
  }, 
  { 
   text: '格子8', 
   icon: '../../images/c8', 
   route: '../c8/c8', 
  }, 
  { 
   text: '格子9', 
   icon: '../../images/c9.png', 
   route: '../c9/c9', 
  } 
 ]; 
module.exports = { 
 PageItems: PageItems 
}
ログイン後にコピー

index.js のページでは、routes.js を参照して、データの PageItem を取得していますが、PageItem は 1 次元の配列であり、これまでの考え方では 1 行 3 列をグループとして使用していたため、この 1 次元配列を変換する必要があります。再結合する最も直接的な方法は、配列を生成することです。各配列要素には 3 つの要素のみを含む 1 次元配列が含まれます。コードは次のとおりです

//index.js 
//获取应用实例 
var app = getApp() 
var routes = require('routes'); 
Page({ 
 data: { 
  userInfo: {}, 
  cellHeight: '120px', 
  pageItems: [] 
 }, 
 //事件处理函数 
 onLoad: function () { 
  var that = this 
  console.log(app); 
  //调用应用实例的方法获取全局数据 
  app.getUserInfo(function (userInfo) { 
   wx.setNavigationBarTitle({ 
    title: '全新测试追踪系统-' + userInfo.nickName, 
    success: function (res) { 
     // success 
    } 
   }) 
   that.setData({ 
    userInfo: userInfo 
   }) 
   var pageItems = []; 
   var row = []; 
   var len = routes.PageItems.length;//重组PageItems 
   len = Math.floor((len + 2) / 3) * 3; 
   for (var i = 0; i < len; i++) { 
    if ((i + 1) % 3 == 0) { 
     row.push(indexs.PageItems[i]); 
     pageItems.push(row); 
     row = []; 
     continue; 
    } 
    else { 
     row.push(indexs.PageItems[i]); 
    } 
   } 
   wx.getSystemInfo({ 
    success: function (res) { 
     var windowWidth = res.windowWidth; 
     that.setData({ 
      cellHeight: (windowWidth / 3) + &#39;px&#39; 
     }) 
    }, 
    complete: function () { 
     that.setData({ 
      pageItems: pageItems 
     }) 
    } 
   }) 
  }) 
 } 
})
ログイン後にコピー

index.wxml に配置します。各グリッドは同じですが、データが異なるため、テンプレートを使用して表示することを考えました。この目的のために、まずセル テンプレート サーフェイス cell.wxml を作成します。

<template name="cell"> 
 <navigator url="{{route}}" class="pages-item" style="height:{{cellHeight}}"> 
  <view class="{{text==null||text.length==0?&#39;pages-icon-wrapper-no-bg&#39;:&#39;pages-icon-wrapper&#39;}}" > 
   <image src="{{icon}}" class="pages-icon"></image> 
  </view> 
  <view class="pages-text-wrapper"> 
   <text class="pages-text">{{text}}</text> 
  </view> 
 </navigator> 
</template>
ログイン後にコピー

ここでは、外部から渡されるデータが 2 つの中括弧で囲まれており、その後、変更を容易にするために内部で単純な論理的判断が行われることがわかります。プレゼンテーション。例えば、text==nullの場合は、背景が空のグリッドを表示したいので、データがある場合は、背景付きのグリッドを表示したいので

"{{text==null||text.length==0?&#39;pages-icon-wrapper-no-bg&#39;:&#39;pages-icon-wrapper&#39;}}".
ログイン後にコピー

もう一つ、このインターフェースファイルをtemplate なので、テンプレートが参照されている場所で呼び出しを識別できるように、テンプレート タグでラップし、名前を付ける必要があります。 ここで、index.wxml でこのテンプレートを参照します

<!--index.wxml--> 
<import src="cell.wxml" /> 
<view class="pages-container"> 
 <scroll-view scroll-y="true" class="pages-wrapper"> 
  <view wx:for="{{pageItems}}" wx:key="{{text}}"> 
   <view class="pages-row"> 
    <template is="cell" data="{{...item[0],cellHeight}}" /> 
    <template is="cell" data="{{...item[1],cellHeight}}" /> 
    <template is="cell" data="{{...item[2],cellHeight}}" /> 
   </view> 
  </view> 
 </scroll-view> 
</view>
ログイン後にコピー

テンプレートは import を使用して参照され、template と is は呼び出しが行われる場所で使用されます。is は cell.wxml 内の名前を指定します。 item[0]、item[1]、item[2]はループ内で渡されるデータ、cellHeightはindex.jsのデータに格納されているデータです。データがテンプレートに渡されると、フレームワークはそれをフィールド、つまりキーと値のペアの形式で展開します。そのため、cell.wxml ファイルをもう一度見ると、キーが内部でデータとして直接使用されていることがわかります。 。 データをインターフェースに提示した後、それに一致する特定のスタイルが必要です。index.wxss コードは次のとおりです。

/**index.wxss**/ 
.pages-container { 
 height: 100%; 
 display: flex; 
 flex-direction: column; 
 box-sizing: border-box; 
 padding-top: 10rpx; 
 padding-bottom: 10rpx; 
} 
.pages-title-bg { 
 width: 100%; 
} 
.pages-wrapper { 
} 
.pages-row { 
 width: 100%; 
 display: flex; 
 flex-direction: row; 
 justify-content: space-around; 
} 
.pages-item { 
 position: relative; 
 padding: 10rpx; 
 width: 33%; 
 background-color: #fff; 
 border: #ddd solid 1px; 
} 
.pages-icon-wrapper { 
 display: flex; 
 justify-content: space-around; 
 align-items: center; 
 margin: 10rpx; 
 border-radius: 30%; 
 height: 75%; 
 background:#00CD0D; 
} 
.pages-icon-wrapper-no-bg { 
 display: flex; 
 justify-content: space-around; 
 align-items: center; 
 margin: 10rpx; 
 height: 75%; 
} 
.pages-icon { 
 width: 100rpx; 
 height: 100rpx; 
} 
.pages-text-wrapper { 
 text-align: center; 
} 
.pages-text { 
 font-weight: bolder; 
}
ログイン後にコピー

効果は以下のとおりです

このテンプレートでは、ナビゲーター要素を使用してグリッドを表示するため、各グリッドを自然にナビゲートできます。

上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

WeChat ミニ プログラム ページでのデータ操作と関数呼び出しの分析について

カードめくりゲームの WeChat ミニ プログラム バージョンの実装

WeChat ミニ プログラム文字関数に基づいて都市選択を実装します

以上がミニプログラムは九公格インターフェースのナビゲーションを実現しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート