我有一个现有的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的服务器不同的端口上。
答案 0 :(得分:3)
使用ng-href和ng-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
});
}