具有ng-click的项目不是重复循环的一部分。以下是我正在尝试做的例子。我应该如何将调用元素传递给函数?
<div ng-click="myFunction(this)"></div>
在我的角度控制器中:
$scope.myFunction = function(elem){
$(elem).addClass('newClass');
}
答案 0 :(得分:1)
可能会将ng-class用于您正在讨论的用例(请参阅上面的答案)。但要回答关于如何通过ng-click指令传递元素的原始问题:
ng-click指令允许您传递$ event object
<div ng-click="myFunction($event)"></div>
$ event对象本质上是一个jquery事件对象,因此您不仅可以提取有关该事件的信息,还可以提取其中涉及的元素及其父/子。
答案 1 :(得分:1)
试用此解决方案
AngularJS中的
- 使用:( $ event )代替( 此 )。
- ( angular.element )是JQuery( $ )。
- ( .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>
答案 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
会自动刷新。