我正在用Meteor創建一個應用程序,我有一個菜單按鈕,它是一個顯示和隱藏邊欄的切換按鈕。 (綠色條)流星:DOM元素在Template.rendered回調函數中還不存在
頁面加載完成或用戶登錄後,如果瀏覽器寬度大於768px,我想單擊菜單切換按鈕以顯示它。
目前,我通過反應性地檢查Meteor.user()來實現這一目標,因爲如果用戶登錄並且用戶第一次登錄,則在加載頁面後調用Meteor.user()。
userEnabled =() ->
if Meteor.user()
console.log 'user Enabled called ' + menuOpen
if $(window).width() > 768
if menuOpen is false
console.log 'reached inside'
# Need to use setTimeout before clicking because .show-left element has just been added back to the screen, so we need to wait. I don't like this very much, need to find better method.
setTimeout ->
$('.show-left').click()
, 600
Deps.autorun() ->
userEnabled()
的問題是,在頁面加載某些原因,userEnabled()有時被稱爲兩倍,因此它的開放和關閉邊欄。另一個問題是不得不使用setTimeout方法來等待菜單切換元素的存在,所以我可以點擊它。沒有setTimeout,元素不會被點擊。
所以2個問題
1)客戶端登錄的回調被調用兩次
2)我必須使用setTimeout的等待元素點擊之前存在。
我該如何解決這個問題?
讓我知道你是否需要我提供更多信息,並非常感謝你的幫助。