在DART语言中添加侦听器到自定义元素

时间:2014-10-11 19:25:11

标签: dart dart-html

在JavaScript中,我们可以通过以下方式将侦听器添加到自定义元素here

proto.createdCallback = function() {
   this.addEventListener('click', function(e) {
   alert('Thanks!');
  });
};

我尝试将等效的DART代码设为:

    Element launchElement(){
       this.onClick.listen((e)=>print('Thanks!'));
       return (shadow);  
    }

我在这里做错了吗?

我的自定义元素的完整代码是:

class MegaButton extends ButtonElement  {
  static final tag = 'mega-button';
  factory MegaButton()=>new Element.tag('button', tag);

MegaButton.created() : super.created() {
  var shadow = this.createShadowRoot();
  shadow.text='save'; 

  Element launchElement(){
    this.onClick.listen((e)=>print('Thanks!'));
    return (shadow);  
  }

}

将其注册为:

document.registerElement(MegaButton.tag, MegaButton, extendsTag: 'button');

并通过以下方式调用:

myDiv.nodes.add(new Element.tag('button', 'mega-button'));

2 个答案:

答案 0 :(得分:1)

class MegaButton extends ButtonElement {
  static final tag = 'mega-button';

  factory MegaButton()=> new Element.tag('button', tag);

  MegaButton.created() : super.created() {
    var shadow = this.createShadowRoot();
    shadow.text = 'save';
  }

  void attached() {
    this.onClick.listen((e)=>print('Thanks!'));
  }
}

答案 1 :(得分:0)

您可以这样添加监听器:

class MegaButton extends ButtonElement {
  static final tag = 'mega-button';
  factory MegaButton() => new Element.tag('button', tag);

  MegaButton.created() : super.created() {
    var shadow = this.createShadowRoot();
    shadow.text = 'save';

    Element launchElement() {
      return (shadow);
    }

  }

}

void main() {

  document.registerElement(MegaButton.tag, MegaButton, extendsTag: 'button');

  DivElement myDiv = querySelector("#mydiv");
  MegaButton mbutton = new Element.tag('button', 'mega-button');
  mbutton.onClick.listen((e) => print('Thanks!'));
  myDiv.nodes.add(mbutton);


}