国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 課堂 > 小程序 > 正文

微信小程序在其他頁面監(jiān)聽globalData中值的變化

2020-03-21 15:51:52
字體:
供稿:網(wǎng)友

前言

這幾天去面試,多次碰到同一個知識點。而且有一次面試挺有趣的,是關(guān)于小程序的。共有3個問題。

1、小程序中Page.watch()方法是做什么用的?

2、小程序中如何在其他頁面中監(jiān)聽到globalData中值的變化?

3、如果在app.js執(zhí)行登錄部分的代碼,由于時序問題,如何處理其他頁面請求時未獲取到身份識別標(biāo)記的情況。(session,userid等)。(大意是:怎么能夠保證其他頁面請求是在登錄之后?)

知識點

有經(jīng)驗的同學(xué)可能一下子就看出來了,這其實說的是同一個東西,那就是Object.defineproperty()這個方法。

下面我來嘗試回答一下:

第一題:小程序中并沒有Page.watch()方法,但其實這里面試官的要問的東西就是第二題的題目,也就是屬性監(jiān)聽器。

第二題:由于要監(jiān)聽到globalData中的值的變化,所以一般要在globalData改變時回調(diào)一個方法。例如我們監(jiān)聽一個name屬性,大致代碼如下:

// app.js中//app.jsApp({ onLaunch: function () { let that = this // 在這里用定時器模擬網(wǎng)絡(luò)請求的過程 setTimeout(function(){  that.globalData.name = 'pxh' },3000)  }, // 這里這么寫,是要在其他界面監(jiān)聽,而不是在app.js中監(jiān)聽,而且這個監(jiān)聽方法,需要一個回調(diào)方法。 watch:function(method){ var obj = this.globalData; Object.defineProperty(obj,"name", {  configurable: true,  enumerable: true,  set: function (value) {  this._name = value;  console.log('是否會被執(zhí)行2')  method(value);  },  get:function(){  // 可以在這里打印一些東西,然后在其他界面調(diào)用getApp().globalData.name的時候,這里就會執(zhí)行。  return this._name  } }) }, globalData: { userInfo: null, _name:'msr' }})// 然后在index.js中的聲明周期中實現(xiàn)onLoad: function (options) { let that = this; getApp().watch(that.watchBack) }, watchBack: function (name){ console.log(22222); console.log('this.name==' + name) }

看看執(zhí)行效果(可以看到,我們在其他界面完美實現(xiàn)了監(jiān)聽到globalData的變化)

微信小程序,頁面監(jiān)聽,globalData

第三題:emmm。第二題的答案就是第三題的答案啦。我們可以在index.js中的回調(diào)方法中再進行網(wǎng)絡(luò)請求,請求需要識別身份的資源。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對VEVB武林網(wǎng)的支持。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 凉山| 威海市| 文昌市| 宝丰县| 吴忠市| 思南县| 交城县| 马山县| 清新县| 思茅市| 兴山县| 淮安市| 区。| 滨州市| 陇川县| 沿河| 石狮市| 赣榆县| 麟游县| 阿合奇县| 九台市| 响水县| 昌都县| 佳木斯市| 灵丘县| 金川县| 化州市| 金坛市| 安塞县| 来安县| 永定县| 达拉特旗| 莱西市| 临湘市| 四会市| 巴塘县| 抚顺县| 疏附县| 衡阳县| 铁力市| 万山特区|