例如,我有两个按钮
<button class="item" ng-click="clickFun(this)">ngClick</button>
<button class="item" onClick="clickFun(this)">jQueryClick</button>
我试图访问两个按钮,它在jQuery Click中工作,但是ngClick失败了。我从ngClick获得了'(空)。
js code:
var oneApp = angular.module('oneApp', [])
.controller('oneCtrl', function($scope) {
console.log('running');
$scope.clickFun = function(obj){
console.log($(obj).text());
//console.log($(obj).next('.next'));
//console.log($(obj).next('.next').text());
}
});
function clickFun(obj){
console.log($(obj).text());
}
答案 0 :(得分:3)
您应该在调用$event
函数时传递ng-click
对象,该函数基本上会将当前事件对象传递给clickFun
&amp;然后执行event.target
,这将指示控制器内的当前上下文(this
)。
<强>标记强>
<button class="item" ng-click="clickFun($event)">ngClick</button>
<强>代码强>
$scope.clickFun = function(event){
console.log($(event.target).text());
}
注意:在Angular
中使用控制器内的DOM不正确
答案 1 :(得分:0)
将DOM元素传递给回调函数不是Angular方式。这是jQuery方式。
在Angular中,不需要传递DOM元素,因为Angular方式不是做DOM操作,而是模型操作;并且视图可以绑定到模型。
因此,在Angular中,您将传递对模型属性的引用,而不是DOM元素:
WebFrameLoadDelegate Protocol
将$ scope.somethingToClickOn传递给点击处理程序,通过单击按钮识别要传递/操作的字段。
答案 2 :(得分:0)
我认为this
在html中没有任何意义。您可以在功能中传递$event
,然后使用$($event.current).text()
代替:
<button class="item" ng-click="clickFun($event)">ngClick</button>
并在JS写道:
$scope.clickFun = function(event){
console.log($(event.target).text());
}
查看更新后的codepen
答案 3 :(得分:0)
您可以通过$ event
来实现这一目标 <button class="item" ng-click='functionname($event)'>
的问候,
Selvam.M