Polymer 聚合:从父元素捕获子元素的事件

Polymer 聚合:从父元素捕获子元素的事件,polymer,Polymer,我想知道如何从父元素捕获子元素中发生的事件,如下所示。我知道这个方法可以使用this捕获事件,但我需要从子元素获取它 我不想从li捕获事件,并通过全局变量或其他类似方式将信息传输到foo,因为我最终将实现一个mousemove事件,该事件发送每个触发器的鼠标位置,通过全局变量技术(如API中所示)发送此消息将极为低效,并会降低应用程序的速度 <polymer-element name="foo"> <template> <ul> <

我想知道如何从父元素捕获子元素中发生的事件,如下所示。我知道这个方法可以使用
this
捕获事件,但我需要从子元素获取它

我不想从
li
捕获事件,并通过全局变量或其他类似方式将信息传输到
foo
,因为我最终将实现一个
mousemove
事件,该事件发送每个触发器的鼠标位置,通过全局变量技术(如API中所示)发送此消息将极为低效,并会降低应用程序的速度

<polymer-element name="foo">
  <template>
    <ul>
      <li>This is my child element</li>
    </ul>
  </template>
  <script>
    Polymer('foo', {
      ready: function() {
        document.querySelector('li').addEventListener('mousedown', function() {
            console.log('mousedown event working');
        })
      }
    });
  </script>
</polymer-element>

  • 这是我的子元素
聚合物(‘foo’{ 就绪:函数(){ document.querySelector('li')。addEventListener('mousedown',function(){ log('mousedown event working'); }) } });

提前感谢您提供的任何见解。

不要使用
document.querySelector()
,因为您的
li
元素位于聚合物元素的内部。顺便说一句,元素名称不正确

您可以使用聚合物的特性来获得
li
元素。为元素分配一个id并使用
this.$
属性(或者,如果不想分配id,可以使用
this.shadowRoot.querySelector()
):


你知道有什么方法可以像普通的js函数一样通过
{mousedown}
  • ”>中传递变量吗?你可以。我试过了,得到了
    [client panel:\u createEventHandler]:监听器方法{mousedown}控制台中未定义
    警告,无法工作。我去掉了花括号,效果很好。
    <li id="item">This is my child element</li>
    
    this.$.item.addEventListener(...);
    
    <polymer-element name="my-foo">
        <template>
            <ul>
                <li on-mousedown="{{mousedown}}">This is my child element</li>
            </ul>
        </template>
        <script>
            Polymer('my-foo', {
                mousedown: function() {
                        console.log('mousedown event working');
                }
            });
        </script>
    </polymer-element>