如何通过ng-click传递给角度函数?

时间:2015-01-28 00:30:38

标签: javascript angularjs click this

具有ng-click的项目不是重复循环的一部分。以下是我正在尝试做的例子。我应该如何将调用元素传递给函数?

<div ng-click="myFunction(this)"></div> 在我的角度控制器中:

$scope.myFunction = function(elem){
  $(elem).addClass('newClass');
}

3 个答案:

答案 0 :(得分:1)

可能会将ng-class用于您正在讨论的用例(请参阅上面的答案)。但要回答关于如何通过ng-click指令传递元素的原始问题:

ng-click指令允许您传递$ event object

<div ng-click="myFunction($event)"></div>

$ event对象本质上是一个jquery事件对象,因此您不仅可以提取有关该事件的信息,还可以提取其中涉及的元素及其父/子。

答案 1 :(得分:1)

试用此解决方案

  
      AngularJS中的
  1. 使用:( $ event )代替( )。
  2.   
  3. angular.element )是JQuery( $ )。
  4.   
  5. .target )是[ HtmlElementObject ]
  6.   

// MODULE
        var MyApp = angular.module('MyApp', []);

        MyApp.controller('MainController', ['$scope', function ($scope) {

            $scope.ShowEnteredName = function (objSender) {

               alert(angular.element(objSender.target).next("input[type=text]").val());

            };

        }]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>



<div id="div_Container" data-ng-app="MyApp" data-ng-controller="MainController">

<a href="javascript:void(0);" data-ng-click="ShowEnteredName($event)">Click Me</a>
<input type="text" ID="txtName" Value=""/>

</div>

答案 2 :(得分:0)

在angularjs中,您不需要操作DOM。如果要为任何项添加类,只需使用angular方式:

<div ng-click="addClass('newclass')" ng-class='myclass'></div>

在控制器中:

$scope.addClass = function(newclass){
  $scope.myclass = $scope.myclass + ' ' + newclass;
}

$scope.myclass更改后,ng-class会自动刷新。