我在Ember中制定了一个有很多嵌套路线的想法。
让我们说我的路线是simulator.scenario.alien-invasion.situation.in-the-woods.something-else.etc
到达那条路线的唯一方法是:
{{$link-to 'simulator.scenario.alien-invasion.situation.in-the-woods.something-else.etc'}}
<span>Next</span>
{{/link-to}}
或者是否有某种方式可以知道我已经在树林里?#34;然后以某种方式让路线相对?
(我真的不会有这么深的路线,但它提出了这个问题。:)
答案 0 :(得分:6)
您可以使用resetNamespace
。
引用文档:http://emberjs.com/api/classes/Ember.Router.html#method_map
resetNamespace:默认为false;当筑巢路线时,余烬会 组合路由名称以形成完全限定的路由名称 与{{link-to}}一起使用或手动转换为路线。设置 resetNamespace:true将导致路由不从其继承 父路线的名称。这对于可以的资源来说很方便 在多个地方访问以及防止极长路线 名。请记住,实际的URL路径行为仍然存在 保留
App.Router.map(function(){
this.route('simulator', function() {
this.route('scenario', function() {
this.route('alien-invasion', function() {
this.route('situation', function() {
this.route('in-the-woods', { resetNamespace: true } function() {
this.route('something-else');
});
});
});
});
});
});
然后您应该可以使用相对链接,例如:
{{#link-to "in-the-woods.something-else"}}Link Name{{/link-to}}
无论你身在何处。
这是一个关于路由嵌套的非常有用的讨论: http://alexspeller.com/embercamp-london-talk-routing/
答案 1 :(得分:1)
我认为没有。 The documentation对此非常全面,并没有提及。浏览链接到组件代码并将其跟回路由器也不会指示它。