Javascript 当两个输入在AngularJS中更改时调用同一方法时,标识方法的调用方

Javascript 当两个输入在AngularJS中更改时调用同一方法时,标识方法的调用方,javascript,jquery,html,angularjs,Javascript,Jquery,Html,Angularjs,假设我有一个包含两列(userid、username)的表。我有两个输入文本字段,在更改时调用一个方法say filter()来过滤表中显示的数据。在AngularJS中,我如何识别哪个元素调用filter()方法。我还想访问调用元素的数据属性。我只是从Angular开始,任何帮助都会很好 我的HTML <div ng-controller="MyCtrl"> <table><thead> <tr><th><input type=

假设我有一个包含两列(userid、username)的表。我有两个输入文本字段,在更改时调用一个方法say filter()来过滤表中显示的数据。在AngularJS中,我如何识别哪个元素调用filter()方法。我还想访问调用元素的数据属性。我只是从Angular开始,任何帮助都会很好

我的HTML

<div ng-controller="MyCtrl">
<table><thead>
<tr><th><input type="text" class="filter" ng-model="jobid" ng-change="filter()" data-filterby="jobid"/></th>
<th><input type="text" class="filter" ng-model="name" ng-change="filter()" data-filterby="name"/></th></tr>
</thead></table>
</div>
我知道我可以很容易地为每个文本框指定单独的函数名,但我希望使用一个通用函数来处理这个问题,从而使代码更简单。 如果是jquery,我可以这样做

$(".filter").keyup(function() {
  var text = $(this).val();
  var filterby = $(this).attr("data-filterby");
});

因此,无论哪个文本框发生更改,我都可以获得该特定文本框中的值。

因为它看起来不像支持
$event
的文本框那样,所以您可以滚动自己的
ngChange
版本来公开它,或者将一些指示符传递给您的筛选方法,如

<input type="text" class="filter" ng-model="jobid" ng-change="filter('jobid')" data-filterby="jobid"/>
<input type="text" class="filter" ng-model="name" ng-change="filter('name')" data-filterby="name"/>

我想我应该问问。。。你想用这个值做什么?也许有一种更具角度的方式来实现你的目标。

谢谢。我正在尝试根据输入框中输入的内容筛选表中的值。听起来您只需要
ngRepeat
w/
filter
,不是吗?是的。我实际上在使用ngRepeat,但没有考虑过滤器。我们有类似的方法根据字段中的值对数据进行排序吗?哦,天哪,我不知道我怎么会错过文档中的那些。非常感谢!
<input type="text" class="filter" ng-model="jobid" ng-change="filter('jobid')" data-filterby="jobid"/>
<input type="text" class="filter" ng-model="name" ng-change="filter('name')" data-filterby="name"/>
$scope.filter = function(key) {
  console.log(key + ' is ' + $scope[key]);
}