小程序是长在微信上的,是移动端的界面,为了能够更方便的使用,我们常常希望使用九宫格界面的方式作为导航,那要如何实现呢?基于一个简单的思考,九宫格就是三行三列,如果把行作为一个单 ...
小程序是长在微信上的,是移动端的界面,为了能够更方便的使用,我们常常希望使用九宫格界面的方式作为导航,那要如何实现呢?
基于一个简单的思考,九宫格就是三行三列,如果把行作为一个单位,再将每一行分成三列,那是不是就可以了?我们实践一下。
首先来考虑九宫格数据的生成,每一个格子需要有一个图标、一个标题、一个便于跳转的路由,那天现在我们有九个页面,所以定义一个一维数组即可。为了更好的进行后续的配置,我们将这个数组独立到一个文件中routes.js,然后将其在index.js页面中引用,routes放到index的目录下。
[javascript]
-
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,然后得到数据PageItems,但PageItems是一维数组,而我们前面思考是要用一行三列为一个组的,所以需要将这一维数组进行重新组合,最直接的方法就是生成一个数组,每个数组的元素又包含了一个只有三个元素的一维数组,代码如下 [javascript]
-
//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
邀请
原作者: 模板之家
来自: 网络收集
|