Backbone:一个从未呈现过的View的重点是什么?

时间:2012-04-17 02:07:44

标签: backbone.js

我正在尝试从其他人的Backbone应用程序中结合文档学习Backbone。有两点我不明白,我无法从文档中找出答案。希望有人能够解释......

应用的要点 这是一个应用程序,您可以将公司名称拖放到框中。

该应用程序具有公司视图,公司模型和公司集合。

它还有一个Bucket View,Bucket Model和Buckets Collection

它还有一个与任何模型无关的通用App View。

...问题

首先 - 视图永远不会呈现是否奇怪?

App View就像这样实例化了

window.App = new AppView();

它会在应用程序中进行不同的操作(使用公司名称等填充存储桶并设置一些事件)。但是,App View永远不会呈现。另一方面,Bucket View和Company View都在代码中的不同点处呈现。例如,

  var view = new BucketView({model: bucket});
  this.$("#bucket-list").append(view.render().el);

但从来没有App View。此App视图也没有渲染功能。所以它有一个从未呈现过的View是奇怪的吗?它的代码应该在别的地方吗?

第二次考虑到从未呈现过应用视图,是否有任何理由需要将el的默认设置更改为布局中主容器div的名称?例如,在App视图中,他们这样做......

el: $("#mainapp"),

但是,如果此视图从未呈现,是否有任何理由更改el的默认设置?

1 个答案:

答案 0 :(得分:2)

正常创建Backbone.View实例时,它会立即在视图上生成el。这用作视图将管理的所有HTML的占位符,并且您通常在渲染方法中使用HTML填充视图的el,正如您已经注意到的那样。

但在某些情况下,您不希望呈现一组全新的HTML元素。相反,您需要管理一些已经属于DOM的现有HTML。在这种情况下,您可以通过在构造函数中指定el,轻松地将主干视图附加到现有DOM元素,就像您使用el: $("#mainapp")行所示。

当Backbone视图看到它已经有el时,它不会生成它自己的。相反,它使用的是它。

所以,直接回答你的两个问题:

1)首先 - 视图永远不会呈现是否奇怪?

不,因为......

2)如果此视图从未呈现,是否有任何理由更改el的默认设置?

问题略微偏离,无法直接回答。实际上,视图永远不会呈现因为它们在构造函数的调用中设置el