2012-04-30 14 views
0

我剛剛將我的Backbone升級到了0.9.2,並且當我做一個view.remove()時,就像我對舊版本所做的那樣,它不再爲我工作。Backbone View.remove()

我有一個叫做processingView的popup.js視圖,它只是將一些jQuery代碼包裝在視圖中擴展。我將它分配給一個名爲處理的變量。 this.processing = new processingView(); 當我觸發一個事件從Dom中刪除處理對象說。 this.processing.remove()不再被刪除。如果我恢復到Backbone的舊版本,它可以工作。

任何人都有任何想法,爲什麼會這樣。 我的代碼是大量的源文件,所以它很難粘貼在這裏。但就我所要做的事情而言,應該直接從dom中移除一個視圖對象。

回答我自己的問題

好吧,我沒有用setElement當我手動設置View.el

如果你手動設置已經this.el中的骨幹視圖是一個特定的DOM元素,您將需要使用setElement。

它仍然不清楚view.el和view。$ el之間的區別。也許有人可以爲我解決這個問題。

回答

1

view.$el相當於$(view.el)。這是一種方便,因此您不必承擔重複調用jQuery構造函數的麻煩和額外開銷。您可能想要構建您的代碼(如果可能),以便您不需要手動設置el並致電setElement。例如,您可以看到my answer爲另一個問題。

+0

在較舊的補充中,我從來不必將el包裝在jquery對象中。我會通過構造函數傳入它。 var view = new View({el:$('。domEl')})。然後el已經是dom元素引用。當我這樣做時,我必須使用$ .el – user1096509

+0

你是不是指'el'已經是一個jQuery對象?我不能說以前的版本的行爲,但Backbone 0.9.2將'view.el'規範化爲一個DOM對象,'view。$ el'規範化爲一個包裝該DOM對象的jQuery(或其他庫)對象。因此,將一個jQuery對象作爲'el'屬性傳遞給構造函數,就像你的例子一樣,將它存儲爲'view。$ el',並將DOM對象存儲爲'view.el'。如果它之前沒有這樣做,我的猜測是它改變了引入一致性,所以'view.el'將始終是一個DOM對象(至少,通過API設置'el'(例如'setElement' ) – JMM

+0

感謝您的解釋。 – user1096509