例如,從 list 頁面到 detail 頁面, 傳遞一個或多個固定值html
list頁面傳值:小程序
<!--pages/list/list.js--> <navigator url="../detail/detail?id=1&name=名稱">點此進入 detail</navigator>
detail頁面取值:微信小程序
<!--pages/detail/detail.js--> onLoad: function (options) { this.setData({ detail_id: options.id, detail_name: options.name }) }
從列表頁進入詳情頁時,須要傳遞列表被點擊項目的 id 至詳情頁,方法:api
在列表頁經過data-id='{{item.id}}'給各個項目綁定一個 id ;
在詳情頁經過 onload 拿到 id;數組
列表頁:緩存
<!--pages/list/list.js--> <view class="list" > <view class='box' wx:for='{{list}}' wx:key='{{index}}' data-id='{{item.id}}' bindtap='goDetail'> <image src='{{item.img}}'></image> <view class='tip'> <text>{{item.title}}</text> <text class='price'>¥{{item.price}}</text> </view> </view> </view> // 進入詳情頁時 傳遞 id goDetail (e) { console.log(e.currentTarget.dataset.id), wx.navigateTo({ url: `/pages/detail/detail?id=${e.currentTarget.dataset.id}`, }) }
詳情頁:微信
// pages/detail/detail.js Page({ data: { detail: {}, loading: true }, onLoad: function (options) { this.loadDetail(options.id); // 拿到列表頁傳過來的 id console.log(options.id) }, loadDetail (id) { wx.showLoading({ title: '詳情加載中...', }) wx.request({ url: 'http://10.0.1.109:3000/list', success: (res) => { console.log(res.data.cityList); let thisPlace = res.data.cityList.filter((val) => val.id == id) console.log(thisPlace) this.setData({ detail: thisPlace[0], loading: false }); console.log(this.data.detail) wx.hideLoading(); } }) }, })
getCurrentPages() 函數用於獲取當前頁面棧的實例,以數組形式按棧的順序給出,第一個元素爲首頁,最後一個元素爲當前頁面。app
注意:ide
例如,在首頁 index 進入列表頁 list,再進入詳情頁 detail 後,若是須要能從detail頁一鍵返回到index頁,而且傳值給index頁,這裏就能夠用頁面棧來實現。函數
首頁:
<!--index.wxml--> <view>{{tag}}</view>
//index.js Page({ data: { tag: '' } })
詳情頁:
返回上一頁面或多級頁面。可經過 getCurrentPages() 獲取當前的頁面棧,決定須要返回幾層。
<!-- pages/detail/detail.wxml--> <view bindtap='backToIndex'> 點此返回首頁 </view>
// pages/detail/detail.js Page({ data: { tag: '土豆' }, backToIndex () { let pages = getCurrentPages() // 獲取頁面棧,pages爲一個數組,裏面存儲了從首頁到當前頁的全部頁面,以下圖所示 console.log(pages) let tag = this.data.tag // 拿到當前頁的tag wx.navigateBack({ delta: 2, success () { pages[0].setData({ tag: tag // 將當前detail頁的tag賦值給首頁index中的tag }) } }) }, })
console.log(pages) 打印值:
在 app.js 中定義全局變量
globalData:{ name: '姓名' }
在其餘頁面能夠取到全局變量
let app = getApp(); console.log(app.globalData.userInfo) // 姓名
bindinput
: 鍵盤輸入時觸發,event.detail = {value, cursor, keyCode},keyCode 爲鍵值bindconfirm
: 點擊完成按鈕時觸發,event.detail = {value: value}<!--/pages/search/search.wxml--> <view class='search'> <image src='/images/search.png'></image> <input placeholder='Find your favourite food' auto-focus bindinput="bindKeyInput" bindconfirm='goSearch' ></input> <text bindtap='goSearch'>搜索</text> </view>
// pages/search/search.js Page({ data: { inputValue: '' }, bindKeyInput(e) { this.setData({ inputValue: e.detail.value }) console.log(this.data.inputValue) }, // 進入搜索結果頁 -> list goSearch() { let content = this.data.inputValue if (!content) { console.log('內容爲空') return } wx.navigateTo({ url: `/pages/list/list?content=${content}`, }) } })