2017-09-17 6 views
1

私はモーダルを開いているところにVue.jsアプリケーションを持っていて、モバイル上でスクロールしないように固定位置に本体を設定する必要があります。これはもちろん、それを上にスクロールします。モーダルを開く前に、私はスクロール位置を取得し、そのように設定します。Vue.js 2は本体のスクロール位置を取得できますが、本体のスクロール位置は設定されていません

this.bposition = document.body.scrollTop 
console.log(document.body.scrollTop) 

をそして、これは私が私のコンソールの出力正しい位置にすることができ、正常に動作します。しかし、その後、私は私のモーダルを閉じたときに、私はこれを行うにしてみてください。

console.log(this.bposition) // proves my close function is running and gets the correct value 
    var el = document.querySelector('body') 
    el.scrollLeft = 0 // have tried with and without this line 
    el.scrollTop = this.bposition 

をしかし、無駄に、ページがスクロールしません。私はページ内のさまざまな要素についても試しましたが、どれもスクロールしません。

答えて

0

UGH。私は解決策を見つけた。どうやら、私の体を固定していたクラスは、モーダルが閉じたときに削除されていたにもかかわらず、それは十分に速く取り除かれていなかったようです。私はタイムアウトを導入することで、これを解決:

setTimeout(() => { 
     el.scrollTop = this.bposition 
     }, 500) 

UPDATE: をやや速く、私はクラスを削除します(外部コードで)機能を発見し、より良い作品私の呼び出し、前にそれを重複:

var el = document.querySelector('body') 
    el.classList.remove('with-modal') 
    el.scrollTop = this.bposition 
関連する問題