我有一个Backbone应用程序,可以在您导航到的每个页面上呈现几个相关的视图。例如,一个页面呈现以下视图:
这里的主表视图是我的路由器首先附加到DOM的 - 在此视图中reset
绑定到其中的appendRows
函数 - 它在每个表行中加法:< / p>
// Instantiate the view, render and append it to the DOM
var tableView = new TableView({ collection: blahCollection });
$("main").append(tableView.render().el);
// Fetch the latest data for the collection (triggers a reset which appends rows)
blahCollection.fetch();
这对我来说似乎是合乎逻辑的,但是当谈到添加分页子视图时,我问自己一个问题,“视图是否真的要控制附加到屏幕上的内容”?
因此,给出了分页示例:
答案 0 :(得分:4)
我喜欢让我的路由器为我做很多高级的东西。例如,我将设置一个基本布局......如下所示:
<body>
<div id="contextBar">
<div id="menus"></div>
<div id="pagination"></div>
</div>
<div id="mainTable"></div>
</body>
然后,在我的路由器处理程序中,我将连接彼此无关的视图:
var contextView = new ContextView({el: $("#contextBar")});
var menusView = new MenusView({el: $("#menus")});
var paginationView = new PaginationView({el: $("#pagination")});
var tableView = new MainTableView({el: $("#mainTable")});
就主表而言,我看到表视图和行视图紧密耦合,因为它们彼此直接相关,所以我通常有集合视图(您的表视图)创建和管理单个项目视图(表格行视图)。
至少,这就是我使用Backbone组织代码的方式。