2012-01-03 22 views
1

我試圖動態創建工具欄中的按鈕列表。該事件不會關閉,當我試圖改變那裏的屬性,我得到一個「未捕獲的typedef:不能調用基法setcaption未定義」我有下面的代碼創建按鈕,Enyo,動態創建組件,無法更改其屬性或獲取要觸發的事件

LoadTabs: function() 
{ 
    this.$.tabs.createComponents([ 
    {name: "mycusbut", caption: "b",onclick: "btnClick" }, // this event never goes off!!!! 
    {caption: "b"}, 
    {caption: "c"} 
]); 
// this.$.frediop.setCaption("Put some text here"); // handle the button click 
}, 

事件btnClick從未熄滅,並嘗試更改屬性的代碼。

btnClick: function() 
{ 
    this.$.mycusbut.setCaption("Put some text here"); // get a undefined object error 
} 

回答

2

我們在這裏創建按鈕的方式將導致它們出現在選項卡對象上。如果你想引用那些你需要使用以下語法:

this.$.tabs.$.mycusbut 

約不被調用的代碼的第二個問題是更陰險一點,因爲,你所創建的標籤對象上的按鈕它正在尋找標籤對象上的函數,這可能不是你想要的。你要麼將標籤對象分成它自己的類型,要有點擊按鈕時可以觸發的事件,或者你需要採取不同的方法來創建對象。也許製作一個可以動態創建按鈕的工具欄類型將是一個好方法?

編輯:更簡單的方法是告訴createComponent將所有者設置爲主類。改變它如下:

this.$.tabs.createComponents([ 
    {name: "mycusbut", caption: "b",onclick: "btnClick" }, 
    {caption: "b"}, 
    {caption: "c"} 
], {owner: this}); 

現在你的代碼應該如你所願。

+0

嗨,謝謝,你能解釋一下$,爲什麼我不能去 – 2012-01-04 18:41:37

相關問題