可以将link-to与动态上下文参数一起用作单个变量吗?
当有1个动态零件时,这是可行的,但在下面的示例中,我有post-category-id
和post-id
。是否有可能动态地传递这些参数。它试图将它们作为数组或字符串传递,但这不起作用。
在本例中,我想使用{{#link-to "post" params}}
,其中post嵌套在post-category中。我的目标是用所需的2个上下文参数传入params。
// 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}}
我试着阅读源代码,但没有太多帮助。
发布于 2015-01-14 02:50:01
不,它会考虑将模型用于其中一条路线。最好的办法是使用两个动态属性。
{{link-to 'My Post' 'post' p1 p2}}
发布于 2015-01-14 02:57:17
不,不是作为单个变量。但是,您可以通过在同一对象下传递这两个值来实现您的目标(如果我理解正确的话)。
因此,在您的示例中,您必须将params属性更改为如下所示:
params: Em.computed(function() {
return { params: { catId: 1, postId: 4 } };
})
然后将params作为两个动态属性传递给完整路径:
{{#link-to "post-categories.post" params.catId params.postId}}
发布于 2015-01-14 16:18:26
好的,我的解决方案是通过控制器上的一个操作。在此操作中,我检查参数的长度,并将case 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])
}
https://stackoverflow.com/questions/27929066
复制相似问题