在ng-click里面的jQuery传递html元素引用
注意:不是上述副本。 上面是访问clicked元素,这个问题是关于访问不同的元素。
题
如何在ng-click
中将我的html文档中的元素(不是单击的元素)传递给Angular范围方法?
示例: http : //jsfiddle.net/Ld8Zs/2/
HTML:
JavaScript的:
var app = angular.module('myApp', []); app.controller('myController', function($scope) { $scope.clickHandler = function(el) { alert(typeof el); // real code work with element---set focus } });
在此示例中,当您单击使用onclick
的第二个按钮时,您将获得“对象”。 当您单击通过ng-click
的第一个按钮时,您将获得“未定义”。
我试图避免将jQuery代码本身移动到控制器或一般的Angular中以保持可测试性。
编辑:
我的原始示例使用jQuery查找第一个元素,该元素很容易被
$event
处理。 这实际上并不表示我想解决的问题,而是将我的实际问题转化为简单的可重现性。
链接的重复项不是同一个问题。
jQuery选择器不是有效的角度表达式,但它清楚地告诉我你要做什么。
我能想到的唯一方法是在范围上分配输入元素:
HTML:
JavaScript的:
var app = angular.module('myApp', []); app.controller('myController', function($scope, $element) { $scope.input = $('input', $element); $scope.clickHandler = function(el) { alert(typeof el); } });
演示FIDDLE
[编辑]
更好的选择
我不确定为什么要将视图元素传递给单击处理程序。 也许有更好的方法 – 例如; 传递输入元素绑定的模型。
HTML:
JavaScript的:
app.controller('myController', function($scope, $element) { $scope.name = 'John'; $scope.clickHandler = function(model) { if (model == 'Tim') { alert("No!!! You're John!"); $scope.name = 'John'; } } });
通过传递模型并操纵绑定到输入的模型,视图(输入元素)会自动更新。 这更有棱角,更少jquery。