是否可以将带有动态上下文参数的link-to用作单个变量?
当有1个动态部分时,此功能有效,但在下面的示例中,我有post-category-id
和post-id
。是否有可能动态传递这些参数。它试图将它们作为数组或String传递,但这不起作用。
在示例中,我想{{#link-to "post" params}}
其中post嵌套在post-category中。我的目标是通过所需的2个上下文参数传递参数。
// router
this.resource('post-categories', {path: 'post-categories/:post-category-id'}, function() {
this.resource('post', {path: 'post/:post-id'})
});
// controller
...
params: Em.computed(function() {
return [1, 4]
})
...
// template
{{#link-to "post" params}}
我试着在源头阅读,但这并没有多大帮助。
答案 0 :(得分:0)
不,它会考虑用于其中一条路线的模型。您最好的选择是使用两个动态属性。
{{link-to 'My Post' 'post' p1 p2}}
答案 1 :(得分:0)
不,不是单个变量。但是,您可以通过在同一对象下传递两个值来实现您的目标(如果我理解正确的话)。
因此,在您的示例中,您必须将params属性更改为以下内容:
params: Em.computed(function() {
return { params: { catId: 1, postId: 4 } };
})
然后将params作为两个动态属性传递给完整路径:
{{#link-to "post-categories.post" params.catId params.postId}}
答案 2 :(得分:0)
好的,我的解决方案是在控制器上执行操作。
在这个动作中,我检查了参数的长度,并将情况transitionToRoute
切换为所需的动态部分。虽然不是干嘛。
switch (params.length) {
case 0:
this.transitionToRoute(route.get('routeName'))
break;
case 1:
this.transitionToRoute(route.get('routeName'), params[0])
break;
case 2:
this.transitionToRoute(route.get('routeName'), params[0], params[1])
break;
case 3:
this.transitionToRoute(route.get('routeName'), params[0], params[1], params[2])
}