2012-12-03 140 views
0

這是在殺死我,正在閱讀本網站上的例子,但無法弄清楚它爲什麼會這樣工作。 我想將值傳遞給我的視圖,該視圖具有可用於更改值的按鈕。 如果我用下面的

this.$el.empty().html(view.el) 

View.el包含正確的HTML,但那些在屏幕上不會呈現。如果我用下面的

$("#handicap").html(view.el); 

值獲得顯示在屏幕上,但該事件,如果我在它揭開序幕的HTML代碼放在一個onclick功能不再會eventhough回升。

理想情況下,我想得到這個。$ el.empty()。html(view.el)工作。它與上下文有關,但不明白爲什麼。

我已經在這裏創造http://jsbin.com/iritex/1/edit

一個jsbin如果我必須使用$(「#障礙」)。HTML(view.el),做我需要做一些特殊的解除綁定事件。我曾嘗試取消一切,但這並沒有做到這一點。

感謝

+0

很難看出你想要做什麼......但我可以說的一件事是,你應該使用'events','model'和'template'。這將簡化事情。 – McGarnagle

回答

0

你需要把兩種觀點到DOM。無論你在哪裏創建需要插入DOM的視圖,上面都是this。如果你這樣做,那麼第一行將正常工作this.$el.empty().html(view.el)

+0

好的,我添加了app.view.player.render(); $(「#handicap」)。html(app.view.player.el);顯示沒問題。我把$(「#handicap」)。trigger(「create」);以呈現圖標。但是按鈕上的事件不會觸發。我認爲把空置在上面會解除事件併爲我解決問題 –

4

Backbone View的el屬性將始終包含對有效DOM對象的引用。但是,該DOM對象可能會或可能不在您的顯示樹中。當你需要它時,確保它在顯示樹中是由你自己決定的。這一功能讓Backbone保持其View元素的狀態,而不會將其呈現在屏幕上。例如,您可以有效地從屏幕添加和刪除視圖。

有幾種方法可以將View元素放入顯示樹中。

1)通過將jquery選擇器作爲「el」屬性傳遞給初始值設定項,將該視圖與頁面上的現有DOM元素相關聯。

var view = new MyView({el: '#MyElementSelector'}); 

2)由它的硬編碼jQuery選擇到視圖的「EL」屬性關聯與頁面上的現有DOM元素的圖。

var MyView = Backbone.View.extend({ 
    el: '#MyElementSelector' 
}); 

3)從另一種觀點認爲

var view = new MyView(); 
view.render(); 
this.$el.empty().html(view.el); 

內渲染頁面。如果你有興趣,我將展示在Backbone Demo我放在一起的例子。

+0

感謝您的幫助,非常好的演示 –