首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有动态上下文的{{#link-to‘routeName’}}

具有动态上下文的{{#link-to‘routeName’}}
EN

Stack Overflow用户
提问于 2015-01-14 02:33:25
回答 3查看 153关注 0票数 1

可以将link-to与动态上下文参数一起用作单个变量吗?

当有1个动态零件时,这是可行的,但在下面的示例中,我有post-category-idpost-id。是否有可能动态地传递这些参数。它试图将它们作为数组或字符串传递,但这不起作用。

在本例中,我想使用{{#link-to "post" params}},其中post嵌套在post-category中。我的目标是用所需的2个上下文参数传入params。

代码语言:javascript
运行
复制
// 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}}

我试着阅读源代码,但没有太多帮助。

EN

回答 3

Stack Overflow用户

发布于 2015-01-14 02:50:01

不,它会考虑将模型用于其中一条路线。最好的办法是使用两个动态属性。

代码语言:javascript
运行
复制
{{link-to 'My Post' 'post' p1 p2}}
票数 0
EN

Stack Overflow用户

发布于 2015-01-14 02:57:17

不,不是作为单个变量。但是,您可以通过在同一对象下传递这两个值来实现您的目标(如果我理解正确的话)。

因此,在您的示例中,您必须将params属性更改为如下所示:

代码语言:javascript
运行
复制
params: Em.computed(function() {
  return { params: { catId: 1, postId: 4 } };
})

然后将params作为两个动态属性传递给完整路径:

代码语言:javascript
运行
复制
{{#link-to "post-categories.post" params.catId params.postId}}
票数 0
EN

Stack Overflow用户

发布于 2015-01-14 16:18:26

好的,我的解决方案是通过控制器上的一个操作。在此操作中,我检查参数的长度,并将case transitionToRoute与所需数量的动态零件进行切换。虽然不是很干。

代码语言:javascript
运行
复制
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])
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27929066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档