2014-10-11 49 views
1

在JavaScript中,我们可以在自定义元素提到here通过添加监听器:到自定义元素添加监听器在DART郎

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')); 
+0

什么是'launchElement'呢?你可以定义一个内部方法,但不要调用它。 – 2014-10-12 12:49:49

回答

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'; 
    } 

    void attached() { 
    this.onClick.listen((e)=>print('Thanks!')); 
    } 
} 
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); 


}