2012-12-08 36 views
0

我創建爲什麼Ti.UI.WebView.fireEvent()調用在監聽器出現時會引發異常?

var win = Ti.UI.createWindow({url:'page.js'}); 
win.listeners = { 
    'type': function(e){ alert('test'); } 
} 
win.open(); 

裏面page.js一個新的窗口,我指定的偵聽器添加到窗口內Ti.UI.WebView。

for (var type in win.listeners) { 
    Ti.API.info(win.listeners[type]) 
    webView.addEventListener(type, win.listeners[type]); 
} 

Ti.API.info(win.listeners [ '類型'])打印功能爲 「< KrollCallback:0xb272160 >」

到webView.fireEvent甲呼叫( '類型')執行精細如果沒有聽衆。但是,如果我像上面那樣將監聽器添加到webView中,則對fireEvent的調用將引發異常。

KrollCallback是什麼?爲什麼fireEvent會在監聽器出現時崩潰?

回答

0

問題是使用url:'page.js'和createWindow()會啓動一個新的上下文。這種類型的設置,如果page.js將工作是這樣的:

exports.getWindow(config) { 

    var webView = Ti.UI.createWebView({}); 

    for (var type in config.listeners) { 
     webView.addEventListener(type, config.listeners[type]); 
    } 
} 

然後,使用這樣的窗口:

var win = require('page').getWindow({ 
    listeners = { 
     'event_type': function(e){ alert('event_type test'); } 
    } 
}); 

win.open(); 
相關問題