2016-12-10 124 views
0

我想知道,如何將參數傳遞給AngularJS模板內部的動態函數。 我在桌上有很多行,每一行都有一個按鈕添加存款。我想將行號傳遞給此按鈕的ng-click函數。將參數傳遞給AngularJS模板內部的函數

這裏是我的模板的片段:

<div id="documentsTable" class="table-responsive"> 
<table class="table"> 
    <thead> 
     ... 
    </thead> 
    <tbody ng-repeat="document in data"> 
     <tr> 
      ... 
      <td> 
       ... 
       <button ng-show="document.depositCheckbox" ng-click="addDeposit({id: document.number})" id="addDepositBtn" 
         type="submit" class="btn btn-primary">Add deposit</button> 
      </td> 
     </tr> 
    </tbody> 
</table> 

指令:

.directive('documentDirective', ['$compile', '$templateCache', function() { 
return { 
    templateUrl: 'templates/documentTemplate.html', 
    scope: { 
     data: '=', 
     addDeposit: '&' 
    }, 
    restrict: 'E' 
}}]); 

而在我的HTML文件我有:在

<document-directive data="documents" add-deposit="addDeposit()"></document-directive> 

功能addDeposit我調節器:

$scope.addDeposit = function(documentId) { 
    for(var i=0; i<$scope.documents.length; i++) { 
     if($scope.documents[i].number == documentId) { 
      var depositLength = $scope.documents[i].deposit.length; 
      var deposit = {'number': depositLength, 'value': 0, 'paymentDate': new Date(), 'firstRow': false}; 
      $scope.documents[i].deposit.push(deposit); 
      break; 
     } 
    } 
} 

謝謝!

回答

2

好吧,據我瞭解,你試圖得到哪一行,你得到的請求?

我想你應該可以用ng-changed的$index屬性來做到這一點。

因此,像:

<button ng-show="document.depositCheckbox" ng-click="addDeposit({id: document.number, rowNumber: $index})" id="addDepositBtn" 
         type="submit" class="btn btn-primary">Add deposit</button> 

編輯: 試試這個,然後:

<button ng-show="document.depositCheckbox" ng-click="addDeposit()(document.number)" id="addDepositBtn" type="submit" class="btn btn-primary"> Add deposit</button> 

你在哪裏傳遞函數:

<document-directive data="documents" add-deposit="addDeposit"></document-directive> 

的方法傳遞的參數: https://stackoverflow.com/a/26244600/1958344

+0

它不能解決我的問題,因爲我的** id:document.number **存儲rowNumber。問題是,在我的addDeposit函數中我無法獲得這個值 - 它是未定義的。 – piotrb

+0

它看起來像: 我在我的HTML元素聲明,該函數addDeposit()沒有參數,所以當我在我的模板中使用它時,我不能傳遞任何參數到這個函數。 – piotrb

+0

不應該與它有任何關係,因爲你不必在那裏聲明變量。你可以發佈一些控制器代碼,你在哪裏定義'addDeposit'函數? –