- 應用類型:移動
- 鈦SDK:3.1.1.GA
- 平臺&版本:iOS的6.1
- 設備:iPhone模擬器
- 主機操作系統:OSX 10.8.4
- 鈦工作室:3.1.1.201306112235
個parent_controller.js:鈦應用程序事件控制器之後發射被破壞
_.each(category, function(inventory_item, index, list) {
var row = Alloy.createController('inventory_list_row', {
selectedBackgroundColor: '',
data: inventory_item
});
row.destroy();
row = null;
});
Ti.App.fireEvent('checkIn');
inventory_list_row.js:
Ti.App.addEventListener('checkIn', function(e) {
console.info('Checking In: ' + args.data.title);
});
前言:上述代碼被沖淡證明點。我知道它並沒有真正做任何事情,但確實存在問題。
parent_controller.js中的代碼可以根據我的Titanium Mobile iPad應用程序中的用戶交互執行多次。如果上面的代碼只在一切正常時運行。每次上面的代碼再次運行時,以前的控制器都是如何保留在內存中,並且仍然是陷阱事件。
例如,假設第一次執行代碼時生成了3個inventory_list_row控制器。在控制檯中,我會看到3'正在檢查'消息按預期顯示。但是,第二次運行時,我會看到控制檯中出現6'Checking In'消息,等等。
這是爲什麼,我能做些什麼來防止這種情況?你可以看到我已經嘗試使用.destroy並將行設置爲null無濟於事。
正如我在下面所提到的,「刪除在destroy方法中的eventListener「將完成你在這裏完成的操作,除了它將使用Alloy控制器默認提供的銷燬方法 –
@AaronSaunders更新了我的答案...我對於如何覆蓋'destroy 「但是,會感激雙重檢查 –