2014-10-11 48 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); 


}