2014-11-06 64 views
0

我想知道如何角NG重複變量傳遞給我的javascript onclick事件如何AngularJS NG重複變量傳遞爲Javascript點擊事件

我的角度中繼

 <div class="data" data-ng-repeat="sub in subs" > 
      <button onclick="ConfirmDialog(sub.SubID)">Cancel</button> 
      {{ sub.someOtherProperty}} 
      {{ sub.someOtherProperty}} 
      {{ sub.someOtherProperty}}     
     </div> 

我的腳本功能

<script type='text/javascript'> 

    function ConfirmDialog(subID) { 
      console.log('Succesfully submitted id: ', subID); 
    }); 
</script> 

錯誤:子沒有定義(在從按鈕元件的onclick()調用)所有其它屬性顯示爲e xpected。

回答

6

你是直的JavaScript的onclick,而不是運行NG-點擊。

將confirmDialog移動到您的控制器中並且ng-click可以附加到它。

<div class="data" data-ng-repeat="sub in subs" > 
     <button ng-click="ConfirmDialog(sub.SubID)">Cancel</button>    
</div> 

$scope.ConfirmDialog = function (subID) { 
     console.log('Succesfully submitted id: ', subID); 
}); 
+0

「轉爲字符串」方法將不起作用,錯誤:錯誤:[$ compile:nodomevents] HTML DOM事件屬性的插值不允許使用。請使用ng版本(例如ng-click代替onclick)。 但是,將它移到控制器中的確是+1!編輯爲 – 2014-11-06 22:25:56

+0

只包含答案的正確部分。 – 2014-11-06 22:28:20

1

您應該使用,而不是NG單擊以訪問NG重複可變

<button ng-click="ConfirmDialog(sub.SubID)">Cancel</button> 
+0

我沒有把它傳回角控制器。 Ng點擊不起作用。 – 2014-11-06 22:19:03

+0

我想我誤解了你,因爲你試圖告訴我通過使用ng-click將所有內容移動到控制器中。我不知道這就是你的意思,所以+1。 – 2014-11-06 22:29:10

3

如果你不想使用ng-click,你仍然有機會!請嘗試以下方法

<tr ng-repeat="supplier in suppliers" id="{{supplier.id}}"> 
     <button onclick="readVariable(this);"> 
</tr> 

<script> 
    function readVariable(elem){ 
     id = elem.parentNode.id; 
     console.log(id); //it works! 
    } 
</script>