如何通过ng-click将其传递到角度函数

How to pass this through ng-click to an angular function?

本文关键字:函数 何通过 ng-click      更新时间:2023-09-26

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

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

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

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

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

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

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

试试这个解决方案

  1. 在 AngularJS 中使用 : ($event) 而不是 (this)。
  2. angular.element) 是 JQuery($)。
  3. .target) 是 [HtmlElementObject]

// 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>

在 angularjs 中,你不需要操作 DOM。如果你想给任何项目添加一个类,只需使用角度方式:

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

在控制器中:

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

$scope.myclass发生变化时,ng-class会自动刷新。