指针事件目标始终是最外层的Polymer元素

时间:2014-03-19 12:42:58

标签: dart dart-polymer polymer shadow-dom pointer-events

我正在搬运 从JS到Dart的polymer-ui-card

不同之处在于,在我们的项目中(按惯例),我们有一个包含整个应用程序的附加聚合物元素(app-element)。

在JavaScript中看起来像

<body unresolved>
  <div id="cards">
    <polymer-ui-card swipeable>Swipe Me!</polymer-ui-card>
    <polymer-ui-card swipeable>Swipe Me!</polymer-ui-card>
    <polymer-ui-card></polymer-ui-card>
    <polymer-ui-card swipeable>Swipe Me!</polymer-ui-card>
    <polymer-ui-card></polymer-ui-card>
  </div>
  ..
</body>

我们的Dart端口看起来像

<body unresolved>
  <app-element></app-element>
</body>

app-element 包含正文标记在JS中的内容

<polymer-element name='app-element'>
  <template>
    <div id="cards">
      <polymer-ui-card swipeable>Swipe Me!</polymer-ui-card>
      <polymer-ui-card swipeable>Swipe Me!</polymer-ui-card>
      <polymer-ui-card></polymer-ui-card>
      <polymer-ui-card swipeable>Swipe Me!</polymer-ui-card>
      <polymer-ui-card></polymer-ui-card>
    </div>
  </template>
  ..
<polymer-element>

polymer-ui-card (在JS和Dart中相同)

<polymer-element name="polymer-ui-card" attributes="swipeable noCurve"
on-trackstart="{{trackStart}}" on-track="{{track}}" on-trackend="{{trackEnd}}" on-flick="{{flick}}">

这里的问题是所有指针事件的目标是<app-element>而不是<polymer-ui-card>元素。

这是设计,还是这个问题可能只是Dart,或者我做错了什么?

1 个答案:

答案 0 :(得分:1)

由于event retargeting,在没有上下文的情况下,再也无法讨论事件的target

注册事件侦听器的位置决定了事件对象上标识的DOM节点的范围。

如果您将事件监听器放在<app-element>上,它将永远是目标,因为它在文档范围内没有子级。