Ember 中将参数从一条路由发送到另一条路由的“适当”方式是什么?例如,我有两条这样定义的路线:
this.resource('activities', { path: '/activities/:on_date' }, function() {
this.route('new');
});
当ActivitiesRoute
用户打开时,会显示可能活动的下拉列表。当他们选择某些东西时,它会转换为ActivitiesNewRoute
:
this.transitionToRoute('activities.new');
而且我知道该方法中有第二个参数可用,transitionToRoute(route,model)
但它用于传递模型,我假设这不应该重新用于其他参数传递。在这种情况下,下拉选项是选择Action
模型 id,ActivitiesNew 的模型是Activity
.
以下是我对可能可行的方式的三个猜测:
1)使其成为路由器参数
我想我可以更改ActivitiesNew
为包含一个“参数”作为路线的一部分:
this.route('new', { path: '/new/:my_parameter' });
我不确定我是否真的希望它成为 URL 路径的一部分,但如果这是流行的约定,那么我会接受它。
2)获取句柄,过渡后
在 transitionToRoute 调用之后,我可以立即设置新控制器类的属性。不确定控制器是否已经设置好,但我在想像:
this.transitionToRoute('activities.new');
this.get('target').controllerFor('activities.new').set('my_parameter', myValue);
3)使用模型参数
this.transitionToRoute('activities.new',myValue);
我怀疑这是一个重大的禁忌。我还没有查看 Ember 代码来知道这是否可行,但它似乎违反约定,所以这是我的“坏选择”。