2015-10-19 26 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