背景
我使用Backbone.js已经有一段时间了,其中一个让我印象深刻的方面是它允许我将DOM元素简化、抽象和重用为“视图”。我试着阅读了一些带注释的源代码,并且熟悉JQuery,但对DOM在更深层次上的工作方式知之甚少。
问题
Backbone.JS如何将DOM元素与视图联系起来,而不为它们分配id、类或其他属性?
即
<ul>
<li>Item one</li>
<li>Item two</li>
<li>Item three</li>
</ul>
我喜欢这个骨干网,我想知道是如何做到这一点的!
发布于 2011-09-01 10:18:40
在javascript中,变量可以保存对DOM的某些元素的引用(即“引用”的编程内容),DOM只是一个Javascript对象。主干确保视图中至少存在该元素。例如,在jQuery中,当您引用列表中的第三项时:
var item3 = $('ul li').eq(2);
(这是一个零偏移量列表,第一项位于索引0,第三项位于索引2),现在您可以使用普通的jQuery DOM操作程序将文本从“项3”更改为“项3 1 4 1 5 9”:
item3.text("Item three point one four one five nine");
即使列表项没有任何特定的类或ID属性。
主干视图的el
字段包含对该视图呈现其所有内容的父元素的常量引用。主干使用jQuery delegate
事件管理器将通用事件处理程序附加到该常量引用。每当在DOM元素或其任何子元素中发生事件时,委托都会捕获事件,以及创建事件的父el
中对特定DOM对象的引用,主干使用一些相当标准的jQuery魔术将其映射到视图中的事件处理程序。
它确实是非常酷的东西。
我要补充的是,-ness引用的“常数”el
是,呃,有争议的。如果要将视图逻辑附加到现有的HTML元素,则需要在视图的el
中为initialize()
分配一次。Javascript不强制执行任何恒定性的概念,但是只有当您确信自己知道自己在做什么时,才应该直接分配给el
(即this.el = something()
)。
https://stackoverflow.com/questions/7274531
复制相似问题