1

我正在查看这个 Backbone 应用程序:

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) 为什么要调用 $("#content").... 从这一点开始?创建视图对象以让新对象“Render”方法处理 HTML 注入不是重点之一吗?事实上,他的 Wine View 对象确实有一个渲染方法(这里:/public/js/views/winelist.js)那么这个调用在这里有什么好处呢?

2) 为什么要在最后添加 EL 属性?我认为 EL 只是 View 被“附加”到的单个标签。如果它只是一个标签,那么它如何生成他正在寻找的所有新 HTML?

3) EL 标签是如何首先设置在新的视图对象中的?我想如果你没有明确声明它,那么 EL 默认为一个空的 DIV,我在他的代码中看不到任何地方为这个视图定义的 EL。

希望有人能解决这个问题!

4

1 回答 1

3

EL 标签是如何设置在这里的?

el当您未指定时,Backbone 代码本身会创建。如您所述,它默认为空 div

this.el 是从视图的 tagName、className、id 和 attributes 属性(如果指定)创建的。如果不是,el 是一个空的 div。

请注意,如果el以这种方式创建,那么它将不会附加到 DOM。因此,上面的代码必须获取el属性(视图的根标记),并将其附加到“#content”下的 DOM。

调用创建视图对象以让新对象“Render”方法处理 HTML 注入不是重点之一吗

也许严格来说,但不一定。Backbone.js 不知道您如何构建应用程序,并且不会对其模型/视图施加严格的要求。您将在 Backbone 应用程序中看到许多类似的不同方法。

于 2013-09-10T22:34:42.663 回答