有没有办法确定drawerPanel是打开还是关闭?

时间:2015-01-24 10:33:10

标签: javascript polymer

或者更确切地说,已经在聚合物源中定义了一种原生方法?我确信我可以写一个函数来很容易地处理逻辑,但是我已经做了一些挖掘并且没有提出任何有关已经实现的确定方法的方法。只是想知道我是否必须自己写点什么。

编辑:刚刚意识到,即使我写了一个tagalong函数来跟踪抽屉何时通过toggleDrawer()打开/关闭,当抽屉被刷开或滑动关闭时它会被抛出,所以我当然希望有一种原生方法。

编辑:使用@Justin XL链接我的页面上的信息,我做了一些测试,发现通过刷卡或抽屉按钮按下关闭抽屉的一般开启,触发了两个核心选择的事件,但通过点击关闭一个抽屉项目被解雇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;
    }
});

每次调用drawerOpen时,drawerPanel.closerDrawer()都会设置为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()(两个都分别返回打开/关闭状态)还没有让我失望,但我会做更多的测试。我甚至不知道这是否是最简单甚至是正确的处理方法,但它似乎有效,我很高兴。

再次编辑:管理以查找问题,如果抽屉面板被刷开,checkDrawer()将返回关闭状态。我确定更多的逻辑将解决它。会做一些调整。

1 个答案:

答案 0 :(得分:1)

我想你的意思是core-drawer-panel

有一个narrow属性可以告诉您面板是否采用窄版布局。

或者,您可以订阅core-responsive-change事件并使用detail.narrow来确定。

您可以从here了解更多信息。