这里是我的骨干路由器看起来像骨干子视图定义 - 主视图VS路由器
define([
"jquery",
"underscore",
"backbone"
], function ($, _, Backbone) {
return Backbone.Router.extend({
routes: {
"overview": "overview"
},
overview: function() {
require([
"views/overview",
"models/user-collection",
"grid",
"spreadsheet"
], function (OverviewView, TestCollection, GridView, SpreadSheetView) {
// Data
var collection = new TestCollection();
// Main view
var view = new OverviewView({
el: "#page",
collection: collection
});
// Sub view #1
var gridView = new GridView({
el: "#backgridWrapper"
});
// Sub View #2
var spreadsheetView = new SpreadSheetView({
el: "#handsontableWrapper"
});
// Flow
collection.fetch({
success: function() {
view.render();
gridView.render();
spreadsheetView.render();
}
});
});
}
});
});
正如你可以看到有几个观点:
- 主视图
- 副视点# 1
- 子视图#2
I'v e做了很多关于如何在Backbone中组织视图和子视图的搜索,但是他们都应该直接在视图定义中创建一个新的子视图实例,以便路由器只知道主视图...
所以问题是 - 在路由器上处理子视图,而不是直接在视图构造器处理它是个好主意吗?
感谢您提供有效的观点。我发现你在视图中获取数据......但是如果不同的视图/路由引用了相同的数据,我们似乎失去了缓存某些内容的能力(可能会在我的原始文章中的路由器中完成)。你会如何解决它? – Vytalyi
那么共享相同数据的那些视图将是父视图的子视图,它们为它们提取数据。 –
就单一路线/功能而言 - 是的,你是对的。我想要做的是 - 考虑我可能会遇到的一些未来问题,当不同的路由引用相同的数据时,可能会出现用例,如果我们在视图中提取数据 - 没有机会处理缓存容易... – Vytalyi