{{#link-to'routeName'}}与动态上下文

时间:2015-01-13 18:33:25

标签: ember.js

是否可以将带有动态上下文参数的link-to用作单个变量?

当有1个动态部分时,此功能有效,但在下面的示例中,我有post-category-idpost-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}}

我试着在源头阅​​读,但这并没有多大帮助。

3 个答案:

答案 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])
}