2014-11-06 66 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>