Angularjs - url params:点击后返回url中的角度变量

时间:2015-03-25 12:36:47

标签: javascript angularjs ngroute

<tbody>
   <tr ng-repeat="message in messages" ng-click="go('pair/{{message.currencyFrom}}/{{message.currencyTo}}')">
      <td>{{ message.currencyFrom }}/{{ message.currencyTo }}</td>
      <td>{{ message.amountSell }}</td>
      <td>{{ message.amountBuy }}</td>
      <td>{{ message.rate }}</td>
   </tr>
</tbody>

Chrome检查中的dom视图显示ng-click="go('pair/EUR/GBP')",但点击后我最终显示pair/%7B%7Bmessage.currencyFrom%7D%7D/%7B%7Bmessage.currencyTo%7D%7D

似乎网址是原始的角度变量。

我已经尝试在循环中添加代码但是表现出相同的行为 我已经尝试首先启动变量并将其传递给go函数:
ng-init="var url = 'pair/{{message.currencyFrom}}/{{message.currencyTo}}'"

我无法想象这是相关的,但现在是:

$scope.go = function ( path ) {
        $location.path( path );
    };

2 个答案:

答案 0 :(得分:1)

试试这样:

ng-click="go('pair/' + message.currencyFrom + '/' + message.currencyTo)"

这是因为您在ng-click内写了表达式,而不是模板。与ng-init相同。

指令:

scope: {
    foo: '=', // This means `foo` must be an expression
    bar: '@' // This means `bar` must be template
}

See this question for detailed explanation

答案 1 :(得分:1)

&#39; {{}}&#39;将被评估为字符,而不是有效的Angular代码。将其更改为:

go('pair/' + message.currencyFrom + '/' + message.currencyTo); 

Angular将处理ng-click中的引号之间的所有内容作为Javascript代码,因此无需使用&#39; {{&#39;或者&#39;}}&#39;。