Angular ng-repeat传递参数到href链接

时间:2015-10-19 19:18:01

标签: javascript jquery ajax angularjs grails

我有一个现有的grails应用程序,使用GSP和自定义tagLibs构建。我需要合并一些使用AngularJS的新代码。 我是AngularJS的新手。

具体来说,我有使用自定义标记生成的现有链接,例如:

<g:custonSearchLink id="${ent.id}" >

评估为

<a href="fullPath/controllerName/method/X", onclick="jQuery.ajax((type:'POST', url:'fullPath/controllerName/method/X', success:function(data,textStatus){jQuery('tableDiv').html(data);}, error:function(...)){}});return false" >...

其中X是id参数。我需要让ng-repeat生成这些链接,然后传递&#34; X&#34; param值进入href和ajax url路径。

所以我明白我可以使用嵌套的花括号&#34; {{}}&#34;将X param从对象传递到href字符串

<li ng-repeat="obj in myList track by obj.id" >
  <a href="fullPath/controllerName/method/{{obj.id}}"

但onclick ajax url嵌套在onclick字符串中的单引号字符串中。我怎样才能通过&#34; X&#34;参与其中? 这不起作用:

onclick="jQuery.ajax((type:'POST', url:'fullPath/controllerName/method/{{obj.id}}', 

请注意&#34; fullPath&#34;在我的情况下是&#34; https://localhost:8453/&#34;因为响应AJAX调用的服务器运行在与托管GSP的服务器不同的端口上。

2 个答案:

答案 0 :(得分:3)

使用ng-hrefng-click可以在javascript事件处理程序中使用AngularJS范围变量。像这样:

<div ng-repeat="someItem in list track by someItem.id">
  <a ng-href="/your/url/to/this/id/{{ someItem.id }}"></a>
  <button ng-click="$scope.someAction(someItem.id)"></button>
</div>

所以你的特定点击事件处理程序将是:

ng-click="jQuery.ajax((type:'POST', url:'fullPath/controllerName/method/{{obj.id}}'"

正如Shashi所提到的,您可以在范围函数中触发HTTP请求,尽管您当前使用内联AJAX处理此方法的方式应该有效。

答案 1 :(得分:1)

在这种情况下,您可以使用ng-click

在同一范围内的角度控制器中定义一个javascript函数,并使用$ http provider调用ajax。

<a ng-click="invoke(obj.id)" />

$scope.invoke = function(id){
   $http({
          method:'POST', 
          url:fullPath/controllerName/method/id
        });
}