在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”参数。