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