2

我在index.js下面的代碼:鈦/合金:事件偵聽器添加到窗口

var win = Alloy.createController('foo').getView(); 
win.open(); 
win.addEventListener('exampleEvent', function() { 
    Ti.API.info('Event Run!'); // does not seem to run 
}); 

foo.js我有以下幾點:

function runEvent() { 
    $.trigger('exampleEvent'); 
    $.getView().close(); 
} 

// execute runEvent() somewhere later 

但是,事件偵聽器中的函數似乎不運行。

我在做什麼錯?

回答

3

您錯過了一個觀點,即自定義事件只能添加到控制器上,而不能添加到視圖上。

var win = Alloy.createController('foo').getView(); 

在該行中,您通過使用getView()贏得變量保持的視圖。

現在,它應該是這樣的:

var win = Alloy.createController('foo'); 

win.on('exampleEvent', function() { 
    Ti.API.info('Event Run!'); // it will run now as you have added custom event on controller (means $ in .js file) itself. 
}); 

// now you can get the top-most view (which is a window in this case) and can further use open() method on window 
win.getView().open(); 

foo.js將保持不變:

function runEvent() { 
    $.trigger('exampleEvent'); 
    $.getView().close(); 
} 

// execute runEvent() somewhere later 
0

就我而言,我是使用

var controller = Alloy.createController('myController'); 
controller.addEventListener("customEvent",function(){}); 

我一直嫌我的頭了一個小時......

在什麼@PrashantSaini呈現頂部,有S於控制器對象沒有的addEventListener,控制器具有on功能,所以它應該是:

controller.on("customEvent",function(){}); 

更新

我的回答是一個擡頭的事實,有控制器對象上沒有的addEventListener。

+0

我不明白這與@Prashant Sainj有什麼不同回答 –

+0

檢查更新 – TheFuquan

相關問題