如果您想让这些不同的仪表板状态可路由(可表示为 URL),您需要提出一个允许独立导航的 URL 方案。假设每个顶部和底部部分都可以将“foo”、“bar”或“baz”作为当前窗格。我会建议
/dashboard/foo;bar
或者
/dashboard/foo+bar
现在您已经选择了一个 URL 方案,您需要告诉路由器如何序列化和反序列化该方案。资源路由需要一个模型,所以我们会伪造一个:
App.DashboardPages = Ember.Object.extend({
top: Ember.required(),
bottom: Ember.required(),
});
App.Router.map(function() {
this.resource('dashboard', { path: '/dashboard/:pages' });
});
App.DashboardRoute = Ember.Route.extend({
model: function(params) {
// TODO: error handling for bad URLs
var pages = params.pages.split('+');
return App.DashboardPages.create({
top: pages[0],
bottom: pages[1]
});
},
serialize: function(model) {
return {
pages: "%@+%@".fmt(model.get('top'), model.get('bottom'))
};
}
});
然后,在您的 中DashboardController
,您可以根据DashboardPages
“模型”选择子视图。