我的Ember应用程序中的应用程序路径正下方有一个模板,其中包含一个带有三个选项卡的导航栏,应该转到三个子路径。链接tos设置如下:
{{#link-to "route.subroute.subroute-1"}}Route name{{/link-to}}
如果您右键单击链接,它们可以正常工作,但是左键单击它们不会将您带到页面。什么都没发生,没有错误。如果您将模型ID硬编码到链接中,那么它可以工作:
{{#link-to "route.subroute.subroute-1" 1}}Route name{{/link-to}}
但是传递模型名称代替硬编码的ID不起作用,它只是在URL的末尾添加了一个#。我怎样才能做到这一点?
Router.map(function(){
this.route('/');
this.route('route', function() {
this.route('subroute', function() {
this.route('subroute-1', { path: 'subroute-1/:route-1_id' });
this.route('subroute-2', { path: 'subroute-2/:route-2_id' });
this.route('subroute-3', { path: 'subroute-3/:route-3_id' });
});
});
});
我尝试将路由器更改为
this.route('/');
this.route('route', function() {
this.route('subroute', { path: 'subroute/:model_id' }, function() {
this.route('subroute-1');
this.route('subroute-2');
this.route('subroute-3');
});
});
});
但是路由/子路由/ {id} / subroute-1中的findRecord(' model',params.model_id)得到"传递给findRecord的ID必须是数字"错误,并且params.model_id未定义。
答案 0 :(得分:1)
您遇到问题的原因是因为Ember的路由器希望根据您在路由器映射中提供的内容,将id(或模型)作为Plugins.Add(new SwaggerFeature
{
AnyRouteVerbs = { HttpMethods.Options },
});
帮助程序的一部分传递:< / p>
link-to
如果你没有你的子路径所需的id(你打算用来从其他地方检索数据),那么你可以这样做:
this.route('route', function() {
this.route('subroute', function() {
// the :route-1_id info here causes problems
this.route('subroute-1', { path: 'subroute-1/:route-1_id' });
this.route('subroute-2', { path: 'subroute-2/:route-2_id' });
this.route('subroute-3', { path: 'subroute-3/:route-3_id' });
});
});