我在这里看到了一个类似的问题:Backbone.js Master-Detail scenario但我想要使用Backbone.js哲学更详细地说明Master/Detail视图的“架构”。骨干路由器的主/细节视图
我在我的应用程序中有一个路由器,负责实例化两个集合视图中的一个。说一个是Questions
,另一个是Committees
。在顶部有两个锚链接,分别路由到#questions-view
和#committees-view
,由路由器拾取并正确切换视图。我有这一切工作。我是否应该拥有一个全球性的App
视图来跟踪所有这些元素,比如一些教程如何操作,或者顶级的Router
足够好?
此外,在我的committees
视图中,我将列出一个委员会名单,点击后,它将更新页面上的另一个框,其中包含该委员会的问题列表。这并不难,但我也想让它触发路由器,并且该视图无法访问Router
,我不确定是否应该。例如,我想导航到..#committees/5
加载视图与委员会ID 5选择,显示所有这些问题。我发布了一些我正在使用的代码的基础知识。我可以很容易地在我的MRFQuestionsCommitteeView.js
中有一个详细子视图,它可以更新点击事件,但它会触发令我困惑的路由器。
感谢您的帮助!
var AppRouter = Backbone.Router.extend({
routes: {
'' : 'home',
'question-view' : 'home',
'committee-view(/:committeeId)' : 'committeeView'
},
home: function() {
var $this = this;
var prom = new MRFQuestions().fetch({
success: function(coll) {
$this.loadView(new MRFQuestionsView({ collection: coll, el: $('#ViewContainer') }));
}
});
},
committeeView: function(committeeId) {
var id = parseInt(committeeId, 10);
var self = this;
var c = new Committees();
c.fetch({
success: function(data) {
var x = self.loadView(new MRFQuestionsCommitteesView({ collection: c, el: $('#Container2') }));
$.when(x).then(function() {
self.view.loadDetailPage(5);
});
}
});
},
loadView: function(view) {
this.view && this.view.remove();
this.view = view;
return this.view.render();
}
});
我不知道这是否真的是我正在寻找的,尽管它是一种有用的模式。你是说有这个通用处理程序,让他们点击一个应该路由到适当数字的链接,并使用路径中的这些参数来调用我的子视图相应的功能? –
示例看起来很复杂,但可以根据需要进行定制。 –