国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微信小程序動態(tài)設(shè)置tab-bar

這篇具有很好參考價值的文章主要介紹了微信小程序動態(tài)設(shè)置tab-bar。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

微信小程序動態(tài)設(shè)置tab-bar(自定義)

配置自定義tab-bar的方法這里省略,可以參考官方文檔

動態(tài)設(shè)置tab-bar

需求:根據(jù)權(quán)限判斷底部tab-bar顯示內(nèi)容
例如普通用戶這里不顯示賽事tab,特殊用戶需要在進(jìn)入小程序的時候顯示賽事tab

微信小程序動態(tài)設(shè)置tab-bar

實(shí)現(xiàn)方法

微信小程序動態(tài)設(shè)置tab-bar

// app.js中請求當(dāng)前登錄權(quán)限,并將tab信息存到globalData中
// 請求回來之后判斷is_competition_on字段
// 賦值給globalData中的tabList(默認(rèn)只有兩項)

that.globalData.tabList = [
          {
            "pagePath": "",
            "text": "",
            "iconPath": "/images/tabbar/",
            "selectedIconPath": "/images/tabbar/"
          },
          {
            "pagePath": "/pages/competitions/index/index",
            "text": "賽事",
            "iconPath": "/images/tabbar/match.png",
            "selectedIconPath": "/images/tabbar/match-active.png"
          },
          {
            "pagePath": "",
            "text": "",
            "iconPath": "",
            "selectedIconPath": ""
          }
        ]

在custom-tab-bar組件中賦值給對應(yīng)的list

  attached() {
    let that = this
    that.setData({
      list: app.globalData.tabList
    })
    getApp().watch(that.watchBack.bind(that)) // 監(jiān)聽并回調(diào)
  },
  methods: {
    watchBack(list) {
       this.setData({
        list: list
      })
    },
    switchTab(e) {
      const data = e.currentTarget.dataset;
      const url = data.path;
      console.log(data, this.data.list);
      console.log(e.currentTarget.dataset.index);
      wx.switchTab({
        url:url
      })
    }
  }

注意!??!由于請求權(quán)限時很有可能出現(xiàn)還沒請求回來就執(zhí)行了custom-tab-bar的attach方法,所以這個app.globalData.tabList很可能還是默認(rèn)值,所以需要對globalData的tabList數(shù)據(jù)進(jìn)行監(jiān)聽。

在監(jiān)聽這一步中g(shù)etApp().watch(that.watchBack.bind(that))需要注意

// 如果是getApp().watch(that.watchBack)
// 那么在watchBack回調(diào)函數(shù)中執(zhí)行this.setData 這個this指向的是undefined,因此需要改變this指向!
getApp().watch(that.watchBack.bind(that))
 // 這里試驗用call和apply無法改變this,原因后面來講
// app.js中使用Object.defineProperty監(jiān)聽 自定義watch函數(shù)
watch:function (method) {
    var obj = this.globalData;
    var temp = obj.tabList;
    Object.defineProperty(obj,"tabList", {
      configurable: true,
      enumerable: true,
      set: (value) => {
        temp = value
        method(value); // 這里回調(diào)傳值
      },
      get:function(){return temp
      }
    })
  },

這樣下來就能正常的獲取到tabList的值并且賦值 夾雜知識點(diǎn)Object.defineProperty去復(fù)習(xí)

為什么call和apply不行

這里涉及到一個知識點(diǎn)
call,apply和bind的區(qū)別

具體可以參考這位博主的筆記
先來看使用call和apply改變this指向的報錯信息
微信小程序動態(tài)設(shè)置tab-bar
method這里是app.js中watch傳參,這里就很清楚了,call和apply的返回值不是函數(shù)而是調(diào)用函數(shù)的返回值,因此這里會報is not a function這個錯誤。

動態(tài)設(shè)置tab-bar還有需要注意的地方就是點(diǎn)擊對應(yīng)的tab時需要自己進(jìn)行配置
實(shí)現(xiàn)方法是通過getTabBar()方法,具體也可以參考官方文檔。
微信小程序動態(tài)設(shè)置tab-bar
經(jīng)過實(shí)際操作后測試發(fā)現(xiàn)這種方式有個很坑的問題,ios在加載tab-bar的時候,如果初始化時默認(rèn)值為兩個tab,動態(tài)生成三個,ios會采用初始化的值,應(yīng)該是用的緩存中的初始值,后續(xù)賦值就無效。

改進(jìn):
將賦值放到頁面上操作,不在組件或者app.js中操作tabList的值。

在首頁onShow方法中判斷,

onShow() {
	//app.globalData.tabList2 為新值 ,app.globalData.tabList為初始化的值,判斷后根據(jù)實(shí)際情況賦值。
	 this.getTabBar().setData({
          list: app.globalData.tabList2,
        })
}

微信小程序動態(tài)設(shè)置tab-bar
其他頁面也可以使用getTabBar().setData()來處理tabList的值。文章來源地址http://www.zghlxwxcb.cn/news/detail-498062.html

到了這里,關(guān)于微信小程序動態(tài)設(shè)置tab-bar的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • uniapp 開發(fā)微信小程序 中使用 custom-tab-bar創(chuàng)建自定義tabbar

    uniapp 開發(fā)微信小程序 中使用 custom-tab-bar創(chuàng)建自定義tabbar

    1.? ?目錄結(jié)構(gòu)必須按照如圖所示,在src 目錄下? ?2. index.js 3.? index.html 4.? wxss 5. index.json ?按照微信官方文檔,以及代碼片段,需要在tabbar 頁面中onshow生命周期內(nèi)設(shè)置 tabbar 的選中狀態(tài),但是在 uniapp 創(chuàng)建的 頁面中是 this 是不包含 getTabBar 方法的, 只有通過?this.$mp.page或者

    2024年02月10日
    瀏覽(15)
  • 微信小程序:動態(tài)修改自定義組件中vant-tab選中標(biāo)簽的大小并加粗標(biāo)簽

    微信小程序:動態(tài)修改自定義組件中vant-tab選中標(biāo)簽的大小并加粗標(biāo)簽

    ? ? ? ? 1.在自定義組件的wxss文件里添加如下代碼,此處還可以改變字體顏色之類的: ? ? ? ? 2.在自定義組件的json文件中修改組件樣式隔離模式: ? ? ? ?3.還遇到一個天坑的問題,這個自定義組件必須放在父組件的第一個引用位置,否則無法生效。我之前tab組件在upload組

    2024年02月06日
    瀏覽(32)
  • 微信小程序--動態(tài)設(shè)置導(dǎo)航欄顏色

    既然要動態(tài)設(shè)置導(dǎo)航欄顏色,估計 自定義導(dǎo)航欄 也跑不了 關(guān)于動態(tài)設(shè)置導(dǎo)航欄顏色,微信小程序官方文檔給出了一個API: wx.setNavigationBarColor 官方給出的示例: 我的實(shí)際使用: 需要注意的是: frontColor只有兩個選擇: #ffffff 和 #000000 frontColor 、 backgroundColor 兩個都需要設(shè)置

    2024年02月16日
    瀏覽(10)
  • 微信小程序設(shè)置動態(tài)變量設(shè)值

    微信小程序如何動態(tài)變量設(shè)值? 示例代碼如下: // 二層數(shù)據(jù)情況

    2024年02月07日
    瀏覽(27)
  • 微信小程序js如何動態(tài)設(shè)置css

    微信小程序中可以使用setData()方法動態(tài)設(shè)置CSS樣式。 例如,我們可以在wxml文件中定義一個樣式類: ``` view class=\\\"my-class\\\"Hello World/view ``` 然后在js文件中使用setData()方法動態(tài)設(shè)置該樣式類的CSS樣式: ``` Page({ ? data: { ? ? myClassStyle: \\\'\\\' ? }, ? onLoad: function () { ? ? this.setData({ ? ?

    2024年02月09日
    瀏覽(29)
  • 微信小程序--動態(tài)設(shè)置導(dǎo)航欄顏色 (navigationBarBackgroundColor)

    微信小程序設(shè)置導(dǎo)航欄顏色 設(shè)置navigationBarBackgroundColor 屬性 微信小程序官方文檔提供了API wx.setNavigationBarColor 代碼示例 有幾個需要注意的點(diǎn) 1. frontColor只有兩個選擇:#ffffff ? 和 #000000 2.?frontColor 、 backgroundColor 兩個都需要設(shè)置 如果在微信小程序中設(shè)置導(dǎo)航欄的背景顏色失敗

    2024年02月08日
    瀏覽(36)
  • 微信小程序動態(tài)設(shè)置標(biāo)題 IOS、安卓通用(直接使用)

    微信小程序動態(tài)設(shè)置標(biāo)題 IOS、安卓通用(直接使用)

    1.默認(rèn)標(biāo)題--在json文件中寫 ?2.動態(tài)設(shè)置標(biāo)題?? ?2-1:固定寫: ? ? ? ?使用方法:直接把這段代碼放在onLoad里面 即表示--界面記載時候就執(zhí)行所設(shè)置的title ????????wx.setNavigationBarTitle({ ????????????title:?\\\"XXXX\\\" ????????}) ?2-2:動態(tài)變更標(biāo)題 ? ? ? ?使用方法:

    2024年02月09日
    瀏覽(20)
  • 小程序自定義底部導(dǎo)航 custom-tab-bar

    小程序自定義底部導(dǎo)航 custom-tab-bar

    前言: 在開發(fā)小程序過程中,如果你需要根據(jù)不同用戶角色顯示不同底部導(dǎo)航;或者導(dǎo)航樣式需要個性化設(shè)計。此時就需要用到自定義底部導(dǎo)航 custom-tab-bar。 1、根目錄下創(chuàng)建custom-tab-bar目錄 2、在app.json文件中配置導(dǎo)航信息 3、custom-tab-bar/index.wxml 文件內(nèi)容 4、custom-tab-bar/ind

    2024年02月11日
    瀏覽(27)
  • 微信小程序內(nèi)嵌h5頁面,實(shí)現(xiàn)動態(tài)設(shè)置頂部標(biāo)題的功能

    一、需求描述 使用HBuilder X作為開發(fā)工具,vue作為開發(fā)語言,開發(fā)微信小程序。微信小程序頁面內(nèi)嵌h5頁面,即web-view/web-view標(biāo)簽。通過設(shè)置不同url連接地址,設(shè)置不同的標(biāo)題。 二、失敗做法 頁面A嵌入h5頁面,需要給A設(shè)置標(biāo)題。最開始寫法是在lonload頁面內(nèi),使用如下語句實(shí)現(xiàn)

    2024年02月04日
    瀏覽(150)
  • 【微信小程序】頁面tab欄與頁面內(nèi)容聯(lián)動_微信小程序?qū)崿F(xiàn)tabs跟下面的內(nèi)容聯(lián)動

    【微信小程序】頁面tab欄與頁面內(nèi)容聯(lián)動_微信小程序?qū)崿F(xiàn)tabs跟下面的內(nèi)容聯(lián)動

    先自我介紹一下,小編浙江大學(xué)畢業(yè),去過華為、字節(jié)跳動等大廠,目前阿里P7 深知大多數(shù)程序員,想要提升技能,往往是自己摸索成長,但自己不成體系的自學(xué)效果低效又漫長,而且極易碰到天花板技術(shù)停滯不前! 因此收集整理了一份《2024年最新大數(shù)據(jù)全套學(xué)習(xí)資料》,

    2024年04月28日
    瀏覽(91)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包