如何在Ember.js中使路由参数可选?

时间:2017-05-30 21:52:43

标签: ember.js ember-cli ember-router

在Ember.js中,给出了这些路线:

this.route('chefs', { path: ":country/chefs"});
this.route('recipes', { path: ":country/recipes"});

我需要将位置参数放在link-to组件中,例如:

{{#link-to 'chefs' 'mx'}}Mexico Chefs{{/link-to}}

如何避免在我的所有链接组件中指定一些参数?

我认为'厨师'路线可以使用来自服务的默认参数。但是怎么样?还有其他想法吗?

这是一个小提琴: https://ember-twiddle.com/fe34f195723fffa88869558e94f3fabc

修改

此需求的另一个示例是使用嵌套路由时。想象一下菜单组件,其中包含“厨师”和“食谱”的链接。当放在名为“country”的父路线中时,说“/ ca”,链接不需要参数。

{{#link-to 'chefs'}}Chefs{{/link-to}}
{{#link-to 'recipes'}}Recipes{{/link-to}}

这些将在'/ ca /​​ chefs'和'/ ca /​​ recipes'之间导航。但是当这个假设的菜单放在根级路由上,比如'/ login'时,菜单会出错“断言失败:你试图定义{{link-to "chefs"}}但没有传递生成动态所需的参数段...“

当链接没有传递一个参数时,我想给路由一个默认的“country”参数。

我看到的另一种选择,似乎并不太优雅,就是创建一个服务并在每个链接中注入“country”参数。

0 个答案:

没有答案