mp-vue實現小程序回頂操做踩坑,wx.pageScrollTo使用無效填坑

原本項目都寫的差很少了,測試測着側着就冒出了新的想法,我由於作的是問卷,所以會有用戶必答題未答完的可能存在,原本市場部給的需求就是作一個彈窗就行了,她說想要作出跳回到用戶未答的第一道題,好吧,既然都這麼說了就只有實現一下了微信

首先來理一下思路:測試

1.要獲取用戶未填寫的題目this

2.定位到第一個未填寫的題目節點spa

3.獲取座標並跳到該座標位置日誌

第一步獲取用戶未填寫題目很容易啦,能夠在裏面加個字段什麼的來標記是否填寫,拿單選題爲例當用戶點擊的時候觸發事件傳遞給父組件code

this.$emit('choice', {
          questionId: this.question.id,
          answerIds: e.target.value,
          selectedIndex: selectedIndex,
          areaId: this.question.areaId,
          ifAnswered: this.myIfAnswered  // 是否已答標誌
        })

而後在提交的時候拿到未答的題目blog

for (let a = 0; a < this.submitArr.length; a++) {
    if (this.submitArr[a].ifAnswered === 'N') {
      this.notAnswered.push(this.submitArr[a])  
  }
}

爲了要定位到未填寫的題目,我是在初次渲染的時候就給每一個組件綁定了該問題的惟一問題id,想要經過微信的selector去獲取id直接獲取到該組件的top值,結果就在這裏踩坑了,由於我發現選擇器使用id是不會返回結果的,通過屢次失敗以後我就嘗試了類選擇器,結果就出來了,我想多是由於我綁定的id是數字?再而後就選擇一些第一個內容就能夠了。事件

var query = wx.createSelectorQuery()
let myTop = []
query.selectAll('.myAnswer').boundingClientRect()
query.exec((res) => {
    myTop = res[0]
}
let myChoose = myTop[0].top
wx.pageScrollTo({
  scrollTop: myChoose.,
  duration: 300
})

這裏要記錄一個坑,由於我也是第一次用這個滾動的API,百度出來人家都用的好好的,可是個人就是不行,不說回調失敗了,根本好像就沒有觸發,什麼fail,success,complete都沒有打印日誌,也搜到過一樣的問題可是別人貌似都沒有解決,問了一手師傅,可是師傅鼓搗了一上午也沒搞出來,而後我就從新建了一個乾淨的頁面發現能夠滾動,因而乎我就嘗試着把個人組件最外層樣式刪掉了,終於發現,原來是由於個人組件設置了position:absolute,貌似就是這個緣由致使API無效,若是有其餘小夥伴出現跟我同樣的問題,記得必定看看本身的position,不能設置哦relative也不行,反正就是都不行。get

誰曾想,我在本身的組件把position刪掉了又出現了另外一個問題,打印顯示回調成功,可是界面並無滾動,通過查找發現是page.js的配置出現了問題,這個項目原來設置了不讓滾動,我簡直無語了hhhit

最後只須要把這個配置'disableScroll': true 刪掉就能夠了,由於默認的就是容許滾動。

相關文章
相關標籤/搜索