2015-10-19 73 views
1

我有一个使用GSP和自定义tagLibs构建的现有Grails应用程序。我需要整合一些使用AngularJS的新代码。 我是AngularJS的新手。Angular ng-repeat将参数传递给href链接

具体来说,我有一个自定义标签生成的的现有联系,如:评估为

<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 PARAM

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

。我需要ng-repeat生成这些链接,并将“X”参数值传递给href和ajax url路径。

所以我知道我可以只使用嵌套的大括号“{{}}”从对象的X PARAM传递到HREF字符串,

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

但的onclick AJAX网址嵌套在onclick字符串中的单引号字符串。我怎样才能将“X”参数传递给那个? 这不起作用:

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

注意“FULLPATH”在我的情况是“https://localhost:8453/”,因为这是响应AJAX调用不同的端口托管GSP在服务器上运行的服务器。

+0

您无法将角度范围变量传递到'onclick'。角度范围变量不在onclick引用的全局命名空间中。 – charlietfl

回答

1

在这种情况下,你可以使用NG单击

,并在你的角度控制器在同一范围内确定一个javascript功能和使用$ HTTP提供AJAX调用。

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

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

谢谢!我在$ http调用中添加了params,并且使用successCallback调用jQuery来更新我的目标div,并且一切正常。 – J21042

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}}'" 

正如沙市提到的,你可以触发示波器功能的HTTP请求,尽管这样,你正在处理这与内联AJAX应该工作。

+0

这工作,谢谢!我将$ http请求放在作为Shashi建议的范围函数中,并且成功回调jQuery()函数。我希望我可以将你和Shashi的答案都标记为正确。 – J21042