我想让一个子元素分派一个自定义事件,让父元素监听它,并采取一些行动.在使用polymer 时,我该如何做到这一点?

推荐答案

您可以从聚合元素发送自定义事件,如下所示:

dispatchEvent(new CustomEvent('nameOfEvent'));

然后,父元素可以侦听如下所示的自定义事件:

<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>

Dart相关问答推荐

S,返回Future.sync()的函数和不需要等待的异步函数有什么区别?

我不明白在DART的`if()`语句中使用`case

有什么区别!并且 ! 在 Dart 中?

如何在 Flutter 的 firebase_database 中执行事务?

在Flutter中重命名文件/图像

Flutter 错误:主体可能正常完成,导致返回null,但返回类型可能是不可为空的类型

zsh:找不到命令:pub

有没有办法在用户停止输入后发送请求?

如何用 Flutter 在同屏路由上制作英雄风格的动画?

Flutter DatePicker 没有day选项

从列表中删除项目后更新 UI

如何在仍然引用来自 pub.dartlang.org 的包的同时运行私有 pub 服务器?

将Dart嵌入到应用程序中

如何在 Flutter 中为 PopupMenu 添加圆角边框?

Flutter-当文本字段有焦点时隐藏提示文本

Flutter/Dart Uri 没有在 URL 中转义冒号:

在 Dart 中调用异步函数而不等待,例如启动一个线程

Opa vs Dart vs Haxe vs CoffeeScript

Dart 中不同的 Map 实现有什么区别?

在 Dart 中为数字添加前导零