我正努力在Marionette应用程序中正确使用控制器。我现在明白AppRouter和Controller是齐头并进的。
我的应用程序中有一个通用/仪表板样式视图,它总结了许多不同的数据集。您可以通过在仪表板上选择这些数据集来更详细地查看这些数据集。例如,有一个'任务列表'允许您选择一个以获取更多详细信息。
我想象这种工作的方式是通过各种途径来实现这一目标。对于从仪表板引出的每个详细视图,如' / tasks /:taskId'。单击某个项目将转到其中一个由AppRouter / Controller对管理的路由。
您是否会拥有管理仪表板的过度控制器/应用程序样式对象?它如何为它总结的数据绘制各种列表视图?
目前我有一个名为' DashboardController'实例化它需要的集合和CollectionView。进入详细视图,我要么通过代理模型调用api来获取特定记录,要么在全局范围内传递集合。
var DashboardController = Marionette.Controller.extend({
initialize : function () {
this._taskData = new TasksCollection();
// Layout will make a call to 'fetch' on each collection passed in once rendered.
this.layout = new DashboardLayout({
tasks : this._taskData
});
},
// This method is mapped to from DashBoardRouter
main : function () {
this.layout.render();
}
});
我担心并引起混淆的原因是我并不完全相信我应该如何使用AppRouter / Controller分离问题,因为在这个例子中他们显然很容易发生冲突。任务集合应该位于一个地方并且是控制器的属性吗?
选项似乎有限:
从其他控制器编写此类控制器(So DashboardController调用TaskController以获取列表视图)。
完全重新考虑控制器所代表的内容。这很棘手,因为AppRouter似乎是将路由(标记化状态)绑定到控制器方法的教条尝试。
这里有几个问题,但我想最终的问题是如何在不引起关注的情况下从多个数据源中呈现/撰写视图?