2012-10-17 65 views
2

我有一個觀點,我實例是這樣的:

var myView = new BackboneView({ el: '#some-div'}); 

在視圖渲染功能(即我從構造函數調用)我要取代目前的元素(我希望把它包轉換爲另一個div,或者將另一個元素放在另一個div之前,並將新元素作爲視圖的主元素)。這個怎麼做?我試試這個:

this.original_el = this.$el; 
this.$el.replaceWith('<div class="new-div"></div>'); 

調試一步一步地看到div在瀏覽器上被替換,但是這個$ el仍然是舊的值。

在另一方面,

this.$el.setElement('<div class="new-div"></div>'); 

取代這一點。$埃爾,但新的div未在瀏覽器中顯示。任何幫助?謝謝

+3

兩個:) http://stackoverflow.com/questions/11594961/backbone-not-this-el-wrapping/11598543#11598543 – nikoshr

+0

哇,我是如此接近!啊,謝謝 – pistacchio

回答

7

我在Backbone repo on GitHub上發現了一個問題。 Backbone不會自動爲你做這件事,你可以在那裏閱讀。解決方案是同時執行這兩個操作,在DOM中替換$el並更新Backbone視圖。在你看來方法:

this.$el.replaceWith(newElement) 
this.setElement(newElement)