這裏是我的骨幹路由器看起來像骨幹子視圖定義 - 主視圖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