Dart 如何从聚合镖触发自定义事件?

Dart 如何从聚合镖触发自定义事件?,dart,dart-polymer,Dart,Dart Polymer,我想从聚合元素内部触发/发送/发出自定义事件。例如,我想将一个普通的DOM事件(如changed)转换为一个更具语义的事件(如todoupdated) 这是我的HTML: 完成{ 颜色:灰色; 文字装饰:线条贯通; } {{item.text} 我希望“更改事件”复选框从自定义元素中冒泡出来,作为其他内容。。。有用的 第一步 捕获上的更改事件。请注意下面的更改 步骤2 在包含复选框的自定义元素代码中处理更改事件 进口“包装:聚合物/聚合物.dart”; 导入“dart:html”; 导入“mod

我想从聚合元素内部触发/发送/发出自定义事件。例如,我想将一个普通的DOM事件(如changed)转换为一个更具语义的事件(如todoupdated)

这是我的HTML:

完成{ 颜色:灰色; 文字装饰:线条贯通; } {{item.text} 我希望“更改事件”复选框从自定义元素中冒泡出来,作为其他内容。。。有用的

第一步 捕获上的更改事件。请注意下面的更改

步骤2 在包含复选框的自定义元素代码中处理更改事件

进口“包装:聚合物/聚合物.dart”; 导入“dart:html”; 导入“models.dart”; @自定义标记“待办事项” 类TodoItemElement使用ObservableMixin扩展了PolymRelation{ @可观察项目; bool get applyAuthorStyles=>true; 无效更改事件e、变量详细信息、节点目标{ //在这里做事 } } 请注意更改事件处理程序。该方法在复选框状态更改时随时运行

步骤3 发送自定义事件

无效更改事件e、变量详细信息、节点目标{ dispatchEventnew CustomEvent'todochange'; } 注意:自定义事件名称不能包含破折号

步骤4 在父自定义元素中侦听自定义事件

请注意on todochange的用法


享受吧

聚合物有一种简化点火事件的辅助方法

//发送自定义事件 this.fire'polymer-select',细节:{'item':item'isSelected':isSelected}; 其他信息: 要使事件对希望以编程方式添加侦听器的订阅服务器可用,请执行以下操作:

//吸气剂 async.Stream get onPolymerSelect=> PolymerSelection.\u on PolymerSelect.forTarget此; //私有事件流提供程序 静态常量dom.EventStreamProvider\u onPolymerSelect= const dom.EventStreamProvider'polymer-select'; 以编程方式而不是声明方式订阅事件:

$['ps']作为PolymerSelect//获取子项并将其强制转换为实际类型 .onPolymerSelect.listene=>printe['isSelected'];//订阅 我使用聚合物辅助方法fire来管理它。通过这种方式,您可以侦听从非子元素激发的事件

todochange.html

完成{ 颜色:灰色; 文字装饰:线条贯通; } {{item.text} 飞镖

进口“包装:聚合物/聚合物.dart”; 导入“dart:html”; @自定义标记“待办事项” 类TodoItemElement扩展了聚合关系{ @可观察项目; 无效更改事件e、变量详细信息、节点目标{ //名称是自定义事件的名称 this.fire核心信号,细节:{name:todochange}; } } 那么任何订户都必须这样做

subscriber.html

...
我认为todoChanged应该是{{todoChanged}}。我想知道是否可以直接从元素触发事件,而不是调用实例方法来完成它。。。