小程序是長在微信上的,是移動(dòng)端的界面,為了能夠更方便的使用,我們常常希望使用九宮格界面的方式作為導(dǎo)航,那要如何實(shí)現(xiàn)呢?基于一個(gè)簡單的思考,九宮格就是三行三列,如果把行作為一個(gè)單 ...
小程序是長在微信上的,是移動(dòng)端的界面,為了能夠更方便的使用,我們常常希望使用九宮格界面的方式作為導(dǎo)航,那要如何實(shí)現(xiàn)呢?
基于一個(gè)簡單的思考,九宮格就是三行三列,如果把行作為一個(gè)單位,再將每一行分成三列,那是不是就可以了?我們實(shí)踐一下。
首先來考慮九宮格數(shù)據(jù)的生成,每一個(gè)格子需要有一個(gè)圖標(biāo)、一個(gè)標(biāo)題、一個(gè)便于跳轉(zhuǎn)的路由,那天現(xiàn)在我們有九個(gè)頁面,所以定義一個(gè)一維數(shù)組即可。為了更好的進(jìn)行后續(xù)的配置,我們將這個(gè)數(shù)組獨(dú)立到一個(gè)文件中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,然后得到數(shù)據(jù)PageItems,但PageItems是一維數(shù)組,而我們前面思考是要用一行三列為一個(gè)組的,所以需要將這一維數(shù)組進(jìn)行重新組合,最直接的方法就是生成一個(gè)數(shù)組,每個(gè)數(shù)組的元素又包含了一個(gè)只有三個(gè)元素的一維數(shù)組,代碼如下 [javascript]
//index.js //獲取應(yīng)用實(shí)例 var app = getApp() var routes = require('routes'); Page({ data: { userInfo: {}, cellHeight: '120px', pageItems: [] }, //事件處理函數(shù) onLoad: function () { var that = this console.log(app); //調(diào)用應(yīng)用實(shí)例的方法獲取全局?jǐn)?shù)據(jù) app.getUserInfo(function (userInfo) { wx.setNavigationBarTitle({ title: '全新測試追蹤系統(tǒng)-' + 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]);