2013-09-10 52 views
1

我期待在這個骨幹網應用:這個骨幹視圖如何獲得它的EL屬性集?

https://github.com/ccoenraets/nodecellar/blob/master/public/js/main.js

,並試圖瞭解它是如何工作的。我看到,在main.js文件他所說的WineView這樣的:

wineList.fetch({success: function(){ 
      $("#content").html(new WineListView({model: wineList, page: p}).el); 

我有這幾個問題:

1)爲什麼叫$(「#內容」)......從這一點?是不是創建一個視圖對象來讓新對象「Render」方法處理HTML注入的要點之一?事實上,他的Wine View Object有一個渲染方法(這裏是:/public/js/views/winelist.js),所以這裏的調用有什麼好處?

2)爲什麼在最後添加EL屬性?我認爲EL只是View「附屬」的一個標籤。如果它只是一個標籤,那麼它是如何生成他所尋找的所有新HTML的?

3)EL標籤如何設置在新的視圖對象中?我想如果你沒有明確說明它,那麼EL默認爲一個空的DIV,我可以在他的代碼中看到EL爲這個視圖定義的任何地方。

希望有人能清除這個!

回答

3

EL標籤究竟是如何設置在這裏呢?

當您不指定它時,主幹代碼本身會創建el。如您所述,it defaults to an empty div

this.el是從視圖的tagName,className,id和attributes屬性(如果指定)創建的。如果不是,el是一個空格。

請注意,如果el以這種方式創建,那麼它將不會附加到DOM。因此,上面的代碼必須採用el屬性(視圖的根標記),並將其附加到「#content」下的DOM。

是不是要求創建一個視圖對象,讓新對象「渲染」的要點之一方法處理HTML注入

也許嚴格地說,但不一定。 Backbone.js對於如何構造應用程序並不強烈,並且不會對其模型/視圖施加嚴格的要求。在Backbone應用程序中你會看到很多不同的方法。

+0

但我認爲調用Jquery的$ .html()方法是將文本注入到DOM中。你似乎在說這裏的目的是爲了將#content標籤賦值給視圖的EL屬性。有些事情似乎倒退了嗎? – user1813867

+0

如何調用Jquery的html()方法將DOM標籤分配給View對象的EL屬性? – user1813867

+0

@ user1813867不,你說得對,'.html()'不會對'el'屬性做任何事情。 'el'屬性是指渲染視圖的HTML內容,對嗎?因此,調用'.html(view.el)'將渲染的視圖附加到'#content'。 – McGarnagle