Javascript 有没有办法确定抽屉面板是打开的还是关闭的?
或者更确切地说,是聚合物来源中已经定义的本地方法?我确信我可以编写一个函数来处理逻辑,但是我已经做了一些挖掘,还没有找到任何关于已经实现的确定这个逻辑的方法。我只是想知道我是否需要自己写点东西 编辑:刚刚意识到,即使我确实通过Javascript 有没有办法确定抽屉面板是打开的还是关闭的?,javascript,polymer,Javascript,Polymer,或者更确切地说,是聚合物来源中已经定义的本地方法?我确信我可以编写一个函数来处理逻辑,但是我已经做了一些挖掘,还没有找到任何关于已经实现的确定这个逻辑的方法。我只是想知道我是否需要自己写点东西 编辑:刚刚意识到,即使我确实通过toggleDrawer()编写了跟踪抽屉打开/关闭时间的标记函数,当抽屉被打开或关闭时,它也会被抛出,所以我确实希望有一个本机方法来实现这一点 编辑:使用@Justin XL链接我的页面中的信息,我做了一些测试,发现通过滑动或按抽屉按钮关闭抽屉的一般打开触发了2个核心选定
toggleDrawer()
编写了跟踪抽屉打开/关闭时间的标记函数,当抽屉被打开或关闭时,它也会被抛出,所以我确实希望有一个本机方法来实现这一点
编辑:使用@Justin XL链接我的页面中的信息,我做了一些测试,发现通过滑动或按抽屉按钮关闭抽屉的一般打开触发了2个核心选定事件,但通过单击抽屉项目关闭触发了4个。我已经设法拼凑出一个解决方案,可以根据2个变量在任何时候确定抽屉是打开还是关闭的
drawerOpenIgnoreClose = false;
drawerOpen = false;
drawerEvent = 0;
drawer.addEventListener('core-select', function() {
drawerEvent++;
//console.log('drawerpanel event fired ' + drawerEvent);
if (drawerEvent >= 2) {
if (drawerOpenIgnoreClose) {
drawerOpenIgnoreClose = false;
console.log('drawer is closed, not from click of menu item');
} else {
drawerOpenIgnoreClose = true;
console.log('drawer is open');
}
drawerEvent = 0;
}
});
每次调用drawerPanel.closerDrawer()
,即每次单击菜单项时,都将drawerpen
设置为false。然后我可以确定抽屉是否打开
function checkDrawer() {
if (drawerOpen && drawerOpenIgnoreClose) {
console.log('drawer is definitely open');
return true;
} else if (!drawerOpen || !drawerOpenIgnoreClose) {
console.log('drawer is definitely closed');
return false;
}
}
抽屉外的按钮和抽屉内的按钮运行checkDrawer()
(两个按钮分别返回open/closed),但我会做更多的测试。我甚至不知道这是否是最简单的,甚至是正确的处理方法,但它似乎有效,我很高兴
再次编辑:设法找到问题,如果抽屉面板被打开,
checkDrawer()
将返回关闭状态。我相信更多的逻辑会解决这个问题。我要做些调整。我想你指的是核心抽屉面板
有一个shown
属性,告诉您面板是否处于狭窄布局中
或者,您可以订阅core responsive change
事件,并使用detail.show
来确定
您可以从中阅读更多内容。利用提供的信息,我编写了一些代码,我认为这些代码提供了一个可行的解决方案,并将其添加到原始问题帖子中。到目前为止,我所有的测试都在进行中,所以感谢您的帮助!我希望我能对你的答案投赞成票,但我仍然缺乏代表性。一旦/如果我到了那里,我一定会回来投票:谢谢,很高兴它有帮助!看来,我很可能会关闭“刷卡”打开抽屉,并放弃这一点,因为每次刷卡都会破坏逻辑。这很令人沮丧。无论如何,这是一个很好的见解,所以再次感谢。现在我已经投了更高的票,因为我可以。