Angularjs 在`<;选择>;`动态更改函数查找

Angularjs 在`<;选择>;`动态更改函数查找,angularjs,Angularjs,使用Angular 1.x,我有两组选择框,它们都在更改时调用函数: ng-click="checkOneOptionSelected()" 在我的控制器中,我想知道哪组选择框称为函数: $scope.checkOneOptionSelected = function(value){ .. do something... } 是否有一种方法可以动态获取ng模型的值,而无需将字符串作为参数传递,或者使用“this”或类似的方法。将值硬编码为参数会起作用,但感觉不太好?您可以传

使用Angular 1.x,我有两组选择框,它们都在更改时调用函数:

ng-click="checkOneOptionSelected()"
在我的控制器中,我想知道哪组选择框称为函数:

$scope.checkOneOptionSelected = function(value){ 

      .. do something...

}

是否有一种方法可以动态获取ng模型的值,而无需将字符串作为参数传递,或者使用“this”或类似的方法。将值硬编码为参数会起作用,但感觉不太好?

您可以传递内置的
$event
对象(在参数中提到),该对象是

然后使用其
target
字段对单击的内容进行推理:

$scope.checkOneOptionSelected = function(event){ 

      .. do something with event.target, e.g...
      if(event.target.id == 'Option123') {
          ...
      }

}

使用
ng model
指令时,代码应使用
ng change
指令,而不是
ng click

<select ng-model="$ctrl.sel1" ng-change="$ctrl.updateSel('sel1',$ctrl.sel1)"
        ng-options="...">
  <option value="">Select sel1</option>
</select>

<select ng-model="$ctrl.sel2" ng-change="$ctrl.updateSel('sel2',$ctrl.sel2)"
        ng-options="...">
  <option value="">Select sel2</option>
</select>
ng click
指令与
ngModelController
对抗。
ng change
指令使用
ngModelController
的属性。只有当输入值的更改导致新值提交到模型时,才会计算
ngChange
表达式

有关详细信息,请参阅


由于建议的方法需要对控制器中可能的选项进行硬编码,因此我认为将id或ng模型值作为参数传递没有任何好处。也许我正在寻找的是不可能的。同意,与直接传递某种类型的
id
相比没有任何优势。@georgewg当使用ng change时,我发现当我读取长度时,即vd.checkbox_1.length,返回的值是单击之前的值。因此,当我单击第一个复选框时,长度被指定为0而不是1。ng click返回了正确的值。它在这种情况下工作。您的
框中肯定有比问题中显示的更多的内容。
<select ng-model="$ctrl.sel1" ng-change="$ctrl.updateSel('sel1',$ctrl.sel1)"
        ng-options="...">
  <option value="">Select sel1</option>
</select>

<select ng-model="$ctrl.sel2" ng-change="$ctrl.updateSel('sel2',$ctrl.sel2)"
        ng-options="...">
  <option value="">Select sel2</option>
</select>
this.updateSel = function (id, val) {
    console.log(id,val);
    //...
};