Ember link-to未通过模型

时间:2017-03-31 08:33:33

标签: javascript ember.js hyperlink

我的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未定义。

1 个答案:

答案 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' });
  });
});