小程序之頁面跳轉(zhuǎn)方式總結(jié)

一 、基本跳轉(zhuǎn)

1.使用組件<navigator>標(biāo)簽來實(shí)現(xiàn)。

特點(diǎn):點(diǎn)擊有按下的效果

<navigator url="../job_detail/job_detail?isShowCompanyDetail=true&iscollect={{item.iscollect}}"> 跳轉(zhuǎn) </navigator> 

2.給頁面布局加監(jiān)聽時(shí)間bindtap事件。然后在方法里面。通過wx.navigatorTo來實(shí)現(xiàn)跳轉(zhuǎn)。

特點(diǎn):點(diǎn)擊無按下的效果。

gotoPage: function () { 
     wx.navigateTo({ 
         url: '../list/list', 
         success: function (res) { 
                 // success 
         }, 
         fail: function () { 
               // fail 
         }, 
         complete: function () { 
             // complete 
         } 
   }) 
}, 

3.通過wx.redirectTo實(shí)現(xiàn)跳轉(zhuǎn)。

特點(diǎn):關(guān)閉當(dāng)前頁面,跳轉(zhuǎn)到應(yīng)用內(nèi)某個(gè)頁面

toList: function (event) { 
     var provinceName = event.currentTarget.id; 
     wx.redirectTo({ 
     url: '../city/city?province='+provinceName, 
     success: function (res) { 
         // success 
     }, 
     fail: function () { 
         // fail 
      }, 
      complete: function () { 
         // complete 
       } 
   }) 
 } 

4.wx.navigateBack方法

關(guān)閉當(dāng)前頁面。返回上一頁面或多級(jí)頁面

wx.navigateBack({ 
    delta: 1, // 回退前 delta(默認(rèn)為1) 頁面 
    success: function (res) { 
        // success 
    }, 
    fail: function () { 
      // fail 
    }, 
    complete: function () { 
        // complete 
      } 
 }) 

給上一個(gè)頁面賦值

var pages = getCurrentPages(); 
var prevPage = pages[pages.length - 2];//上一個(gè)頁面。 
prevPage.setData({ 
     bank_cn: bank_cn, 
     bank: bank 
}) 

重點(diǎn):
tabBar里一般就是四個(gè)主頁面,這些主頁面之間的跳轉(zhuǎn)就像tab切換,這幾個(gè)頁面需要在tabBar里另外配置,普通頁面向這四個(gè)主頁面跳轉(zhuǎn)的時(shí)候,不能使用navigator,需用switchTab。

實(shí)例:從首頁跳到tabBar頁,并且要帶上參數(shù).首先我是這樣做的:

在index.js中:

toCategory:function(event){
    var cate_id = event.currentTarget.dataset.cate_id;
    wx.switchTab({
      url: '../category/category?cate_id='+cate_id,
    });
  }, 

按照上面寫的在category.js里得不到數(shù)據(jù);

onLoad:function(options){

console.log(options);

}

然后查看了下官方文檔.

wx.switchTab(OBJECT)

跳轉(zhuǎn)到 tabBar 頁面,并關(guān)閉其他所有非 tabBar 頁面

OBJECT 參數(shù)說明:

參數(shù) 類型 必填 說明
url String 需要跳轉(zhuǎn)的 tabBar 頁面的路徑(需在 app.json 的 tabBar 字段定義的頁面),路徑后不能帶參數(shù)
success Function 接口調(diào)用成功的回調(diào)函數(shù)
fail Function 接口調(diào)用失敗的回調(diào)函數(shù)
complete Function 接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會(huì)執(zhí)行)

可以看到url路徑后不能帶參數(shù).這下就尷尬了.因?yàn)槲冶仨氁獛б粋€(gè)參數(shù)過去才能滿足業(yè)務(wù)的需求;走了一個(gè)捷徑.思路:跳轉(zhuǎn)的時(shí)候在全局變量里設(shè)置一個(gè)變量cate_id,調(diào)到category.js中后.調(diào)取全局變量里的cate_id,用完后,再把扎個(gè)變量清除掉.具體實(shí)施如下:

首頁index.js中:

toCategory:function(event){
    var cate_id = event.currentTarget.dataset.cate_id;
    app.globalData.cate_id=cate_id;//設(shè)置全局變量(app已經(jīng)定義 var app=getApp())
    wx.switchTab({
      url: '../category/category'
    });
  }, 

分類頁category.js中:

onLoad:function(options){
    var that = this
    var cate_id=app.globalData.cate_id
    wx.request({
      url: app.globalData.httpsurl +'public/index.php?s=product/index',
      data:{
        cate_id:cate_id,
      },
      success:function(res){
        //清除全局變量cate_id
        app.globalData.cate_id=""
        that.setData({
          alldata:res.data,
        })
      }
    })
  }, 

微信小程序wx.switchTab跳轉(zhuǎn)到tab頁面后onLoad里面的方法不執(zhí)行

解決這種問題的方法頁有很多中,最簡單的就是在啟動(dòng)頁添加跳轉(zhuǎn)成功的方法

wx.switchTab({
      url: '/pages/index/index',
      success: function (e) {
        var page = getCurrentPages().pop();
        if (page == undefined || page == null) return;
        page.onLoad();
      }
    })

上面的轉(zhuǎn)化就可以完成業(yè)務(wù)邏輯的需要了.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容