2013-03-10 144 views
2

在骨幹網我會經常使用實例化類似的觀點...如何停止骨幹事件冒泡

new mysite.some.namespace.View(); 

然後將在我看來,加載和附加事件到DOM。問題是刪除該視圖,然後再次實例化。如果我加載視圖兩次,我的事件通常會加倍。我怎樣才能消除這一點?這是因爲我的el被設置爲應用程序的包裝元素?

什麼是這個簡單的解決方案?

+0

是否有可能將視圖初始化爲另一個視圖中的元素?因此,適用於父視圖和子視圖的任何綁定都會被調用兩次... – rudolph9 2013-03-10 02:05:39

+1

您是否正確調用了視圖上的'.remove()'(而不是覆蓋它)?它應該自動清理它的事件。 – loganfsmyth 2013-03-10 02:06:39

+0

@ rudolph9我確實在主視圖中加載了一個子視圖,並且它們都具有相同的「el」。我認爲這可能是問題。我沒有調用.remove(),如果我這樣做,它會破壞我的應用程序,刪除主視圖。 – 2013-03-10 02:10:21

回答

0

您可以使用e.stopImmediatePropagation();以防止事件傳播。

3

從評論聽起來好像你偏離了骨幹直線和狹窄的路徑進入雜草。正確的事件處理需要一定的關注。但是,如果您發佈的代碼較多,我們可以提供更詳細的建議,但是:

  • 確保在完成視圖實例時致電.remove()。所有DOM事件綁定將被自動刪除。
  • 不要做像有兩個視圖實例引用相同元素(this.el)的怪事。
  • 幫你一個忙,別惹this.el。不要指定它。如果需要,請在您的extend對象中使用tagName,但視圖的el應該是A)該視圖唯一的,並且B)從DOM分離,直到視圖外部的某個東西(通常是路由器或複合視圖管理器)。