2013-09-10 54 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