首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从自定义聚合物组件中删除"on-click“

如何从自定义聚合物组件中删除"on-click“
EN

Stack Overflow用户
提问于 2015-11-20 08:58:26
回答 1查看 345关注 0票数 1

我有一个自定义按钮组件在聚合物Dart中完成:

代码语言:javascript
运行
复制
<div id="buttonDiv">
  <my-button id="traceButton"
   mode="icon" faicon="fa-comment-o"
   toolTip="Print a simple comment"
   disabled="false" on-click="{{ traceSomething }}">
  </my-button>
</div>

我正在尝试将此按钮复制/粘贴到其他位置。所以用户在某个地方定义了它,我基本上是通过获取$['buttonDiv'].children然后将其插入到其他地方来移动它。问题是{{ traceSomething }}现在变得无关紧要了,因为它不是新的父类的一部分。我得到的错误是父对象,这是另一个聚合物组件没有实例getter "traceSomething“。

我的问题是,在我把"traceSomething“插入到其他地方之前,有没有办法删除它?我尝试删除"onClick“事件侦听器,但按钮仍然希望在单击时调用该函数。此外,我还尝试添加一个preventDefault等,比如:In Dart, if I listen to a click event with two listeners, how do I know which happens first?,但没有成功。

EN

回答 1

Stack Overflow用户

发布于 2015-11-20 14:34:05

我不确定你所说的复制/过去是什么意思。您是克隆元素,还是仅将其附加到其他一些元素的子元素中。

无论如何,如果事件侦听器是以声明方式添加的,我认为您不能删除它。如果您必须添加它,则很容易删除它并在以后进行readd。

代码语言:javascript
运行
复制
import 'dart:async';

...

StreamSubscription subsc;
@override
attached() {
  super.attached();
  subscr = onClick.listen((e) => (this.parentNode as ShadowRoot).host.traceSomething(e));
}

@override
detached() {
  super.detached();
  if(subscr != null) {
    subscr.cancel();
  }
}

另请参阅https://stackoverflow.com/a/22168745/217408关于访问聚合物元素的父元素(适用于Dart聚合物<= 0.16.x)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33817212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档