有条件地将查询字符串附加到 angular href

Joh*_*ohn 5 javascript angularjs

我正在 AngularJS v1.2.16 中构建一些链接,如下所示:

<a ng-href="/foo/{{id}}/t/{{list[m].id}}/{{id2}}/{{otherId}}">Click here!</a>
Run Code Online (Sandbox Code Playgroud)

这很好用。

现在我有一个查询参数query,如果它存在,我想附加到末尾。

我试着这样做:

<a ng-href="/foo/{{id}}/{{otherId}}{{ query ? '?q=' + query : "" }}">Click here!</a>
Run Code Online (Sandbox Code Playgroud)

我最终得到以下结果,因为 angular 只是将标签的全部内容渲染到链接中,如下所示:

<a href="/foo/2/4%7B%7B%7B%20query%20?%20%27?q=%27%20+%query%20:">Click here!</a>
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现我想要做的事情?

New*_*Dev 1

为了回答您的具体问题,您的尝试不起作用,因为您""在其他双引号内使用了双引号。将其更改<a>为以下内容,它将起作用:

<a ng-href="/foo/{{id}}/{{otherId}}{{ query ? '?q=' + query : '' }}">Click here!</a>
Run Code Online (Sandbox Code Playgroud)

但是,我同意其他答案 - 有时在控制器中生成一个值(在本例中为 URL)会更好、更干净,特别是如果您想围绕该值构建单元测试。