我使用app-location
根据网址显示一组网页中的一个,我还有一个包含paper-listbox
列表的paper-item
,显示可用网页列表。每个paper-item
都有一个链接到该页面。如果正常单击链接,请求将被app-location
拦截,并且页面显示时不会重新加载。如果链接是Ctrl +单击或中间点击或其他任何内容,它会在新标签页中打开页面,就像普通链接一样。
我的问题 - 如何让列表框中的选择与正在显示的页面保持同步?我已经尝试了所有我能想到的东西,但没有什么可行的。
没有任何额外的逻辑,链接有效,但点击paper-item
会选择它,即使显示的页面没有变化。我尝试在列表框的selected
属性中添加观察者并根据需要更新网址。这主要适用于一个例外 - 按住Ctrl键并单击要在新选项卡中打开的链接仍然会导致选择paper-item
,因此现有选项卡也会更改。
我也尝试将整个paper-item
包裹在链接中,但这根本没有帮助。
有什么方法可以解决这个问题吗?似乎唯一的解决方案是找到一种方法来阻止paper-item
在子链接上发生tap事件时捕获它。但是,如果不修改Polymer源代码本身,我无法找到任何方法,这是不可能的。
答案 0 :(得分:0)
我想出了一个使用铁选择器和一些CSS来展示如何做到这一点的例子。然后魔法来自你的锚元素上有一个事件,它检查是否按下了ctrl,如果是,它会阻止事件向下传播,这会阻止对项目的关注。
_onClick: function(e) {
if (e.ctrlKey) {
console.log('stop propagation');
e.stopPropagation();
}
}
注意,这也适用于右键单击并选择从链接打开新选项卡,因为焦点不会传递给项目。
另外,我知道这不使用paper-item组件。我尝试了同样的技术,但它没有用,似乎总是抓住焦点。