我正在用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的等待元素点击之前存在。
我该如何解决这个问题?
让我知道你是否需要我提供更多信息,并非常感谢你的帮助。