我试图从其网站http://documentcloud.github.com/backbone了解backbone.js的实用程序,但我仍然无法理解.
任何人都可以通过解释它是如何工作来帮助我的,以及它如何有助于编写更好的JavaScript?
在设计MVC时,我对结构依赖性有点困惑 - 所以我们有一个模型,集合和视图(我还没有使用控制器,但问题也适用于它).现在谁有参考谁可以用OO术语发言.因此,集合是一个模型列表,因此我们可以将其视为从集合到模型的一对多依赖.在一些示例代码中,我有时会看到对"模型"对象中的视图的引用以及视图中模型的引用.有时在视图中的集合.
在模型中我有时会看到一个this.view和在视图中我看到的东西像this.model.view或一个this.model因此混淆澄清:)
那么什么是"正确"的依赖关系(如果有"正确的方式")或者每个人都可以依赖于每个人(不要认为这是正确的)即,谁应该理想地依赖于Backbone的MVC中的谁物体的设计?当我看到这些截然不同的例子时,从结果的角度来看,知道他们应该如何在结构上相关,这有点令人困惑:)作为一个菜鸟什么是开始构建我的依赖关系的"正确"方式 - 一旦我上升了学习曲线我可能会自己弄清楚,但首先,应该怎么做呢?一个类似UML的图表将是一个额外的奖励;)
另一个问题:有时我在同一段代码中看到两个视图:例如:着名的todo.js http://documentcloud.github.com/backbone/docs/todos.html
现在虽然我理解需要多个视图,但令人困惑的是它们有何不同?我的意思是'el'和'tagName'之间的区别是什么?如果其中任何一个缺席,视图的行为会有何不同?我的意思是在上面的链接中,一个视图使用'tagName'而另一个'el',我不确定它们是如何关联的(如果有的话).
我已经仔细阅读了文档,但正如我所说的那样,我仍然在学习,所以即使有了所有资源,我可能也不会清楚地理解它的一部分,可能需要一些人为干预:)
我有以下页面结构:
<ul class="listOfPosts">
<li class="post WCPost" data-postId="1">
<div class="checkbox"><input type="checkbox" class="wcCheckbox"/></div>
<div class="PostContainer>
<!-- some other layout/content here -->
<ul class="listOfLabels">
<li class="label"> Label 1</li>
<li class="label"> Label 2</li>
</ul>
</div>
</li>
<li class="post WCPost" data-postId="2">...</li>
<li class="post WCPost" data-postId="3">...</li>
<li class="post WCPost" data-postId="4">...</li>
...
</ul>
Run Code Online (Sandbox Code Playgroud)
这是过于简单化的视图:
var MyView = Backbone.View.extend({
el:$('.listOfPosts'),
initialize: function() {
_.bindAll(this,"postClicked");
},
events: {
"click .wcCheckbox":"postClicked"
},
postClicked: function() {
alert("Got a a click in the backbone!");
}
});
Run Code Online (Sandbox Code Playgroud)
问题:我想知道被点击的帖子的数据ID.使用简单的JQuery,我可以执行以下操作:
$('.wcCheckbox').live('click' function() {
alert("Data id …Run Code Online (Sandbox Code Playgroud)