2011-04-14 42 views
0

我有幾個事件監聽器在webOS的應用程序,每一個我設置是這樣的:的stopListening到Mojo.Event

this.controller.listen(
    'aWidget', 
    Mojo.Event.widgetEvent, 
    this.respondToWidgetEvent.bindAsEventListener(this) 
); 

,並停止聽我這樣寫代碼:

this.controller.stopListening(
    'aWidget', 
    Mojo.Event.widgetEvent, 
    this.respondToWidgetEvent.bindAsEventListener(this) 
); 

不過,我現在意識到我的聽衆可能不會停止。當我在函數上調用bindAsEventListener時,是否每次都返回相同的對象?如果不是,stopListening是否確保刪除適當的監聽程序?

回答

1

如果我沒記錯的話,每次調用bindAsEventListener()都會返回一個新的實例。通過調用一次並設置變量來防止該操作:

bindToWidget = this.respondToWidgetEvent.bindAsEventListener(this); 

this.controller.listen(
    'aWidget', 
    Mojo.Event.widgetEvent, 
    bindToWidget 
); 

this.controller.stopListening(
    'aWidget', 
    Mojo.Event.widgetEvent, 
    bindToWidget 
); 
+0

謝謝。我懷疑是這樣,因爲我之前在某些人的代碼中看到過這種模式,但我也看到它是按照我的方式完成的。現在我確認了帶額外變量的其他模式是正確的。 – 2011-04-14 19:14:02

+0

它讓我感到很開心,直到我還有'阿哈'時刻!祝你好運... – 2011-04-14 20:07:33