问题 您如何在Polymer中发送和收听自定义事件?


我想要一个子元素来调度自定义事件和父元素来监听它,并采取一些行动。使用Polymer时如何执行此操作?


2434
2017-09-26 23:11


起源

可能重复 如何从Polymer Dart触发自定义事件? - Seth Ladd


答案:


您可以从聚合物元素中调度自定义事件,如下所示:

dispatchEvent(new CustomEvent('nameOfEvent'));

然后,parent元素可以像这样监听自定义事件:

<child-element on-childspeaks="fireAway"></child-element>

这是一个更完整的示例,展示了它的工作原理。首先,这是子元素的代码:

<!DOCTYPE html>

<polymer-element name="child-element">
  <template>
    <div on-click="dispatch">I am a child</div>
  </template>
  <script type="application/dart">
    import 'dart:html';
    import 'package:polymer/polymer.dart';

    @CustomTag('child-element')
    class ChildElement extends PolymerElement with ObservableMixin {

      dispatch(Event e, var detail, Node sender) {
        print('dispatching from child');
        dispatchEvent(new CustomEvent('childspeaks'));
      }
    }
  </script>
</polymer-element>

这是父元素的代码:

<!DOCTYPE html>
<link rel="import" href="child_element.html">
<polymer-element name="parent-element">
  <template>
    <div>I am the parent</div>
    <child-element on-childspeaks="fireAway"></child-element>
  </template>
  <script type="application/dart">
    import 'dart:html';
    import 'package:polymer/polymer.dart';

    @CustomTag('parent-element')
    class ParentElement extends PolymerElement with ObservableMixin {

      void fireAway() {
        window.alert('The child spoke, I hear');
      }
    }
  </script>
</polymer-element>

14
2017-09-26 23:11



是个 with ObservableMixin 部分需要? - Free Lancer