ui-sref不会使用参数生成正确的href

时间:2015-03-11 13:56:50

标签: angular-ui-router ui-sref

我正在尝试使用ui-router来更改状态并将GUID参数传递给我的控制器。我使用Kendo(不同的语法)工作,所以我知道我的目标是什么。我不能为我的生活弄清楚这笔交易是什么。我已经搜索了很多,我相信我有正确的ui-sref语法。这是:

<a ui-sref="clientEdit({ clientId: '{{vm.clientModel.id}}' })">Edit Link</a>

在渲染视图中生成此输出(注意缺少id):

<a ui-sref="clientEdit({ clientId: 'bfd50b6c-6542-48c5-adf7-8c1a21caf421' })" href="#/clientEdit/">Edit Link</a>

这是我的状态:

.state("clientEdit", {
  url: "/clientEdit/:clientId",
  templateUrl: "/CompanyDashboard/ClientsCrud",
  controller: "DashboardClientsCtl",
  controllerAs: "vm"
})

当我将ID硬编码到ui-sref中时,它按预期工作并为标记生成正确的href。像这样:

<a ui-sref="clientEdit({clientId:'bfd50b6c-6542-48c5-adf7-8c1a21caf421'})">Hard code Edit Link</a>

硬编码ID标签在渲染视图中生成此输出(完全如我所料):

<a ui-sref="clientEdit({clientId:'bfd50b6c-6542-48c5-adf7-8c1a21caf421'})" href="#/clientEdit/bfd50b6c-6542-48c5-adf7-8c1a21caf421">Hard code Edit Link</a>

所以,我的问题是:我在这里遗漏了什么吗?我真的相信这应该可行,因为我已经成功地使用Kendo模板为不同的路线做了这个。

万一你关心,这是工作的剑道模板代码:

template: "<a ui-sref='clientDetails({clientId:\"#=id#\"})'>#=customerNumber#</a>"

我尝试将引号更改为加倍,如同在Kendo示例中一样,删除引号,从Id表达式中删除{{}}。没有喜悦。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

这里的解决方案是 NOT {{}}

包装参数
// instead of this
<a ui-sref="clientEdit({ clientId: '{{vm.clientModel.id}}' })">Edit Link</a>
// use this
<a ui-sref="clientEdit({ clientId: vm.clientModel.id})">Edit Link</a>

vm.clientModel.id的内容已经是一个字符串,并且将作为字符串正确传递(它是JS的GUID,它是字符串)

答案 1 :(得分:0)

所以,在我发布问题之前,我以为我昨天已经尝试了这个,但我没有。这是正确的语法:

<a class="btn btn-sm btn-primary" ui-sref="clientEdit({ clientId: {{'vm.clientModel.id'}} })">Edit Client Test</a>

请注意,单引号位于{{}}内,而不在外部。简单呃?

此HTML生成正确的HREF,如下所示:

<a class="btn btn-sm btn-primary" ui-sref="clientEdit({ clientId: vm.clientModel.id })" href="#/clientEdit/bfd50b6c-6542-48c5-adf7-8c1a21caf421">Edit Client Test</a>