angularjs - 在 ngChange 指令中访问输入值的通用方法

标签 angularjs angularjs-directive

我想对表单的字段执行一些复杂的验证,其中字段验证绑定(bind)在一起或依赖于数据库信息,所以我不想测试 HTML 中的所有内容。目前,我有这个:

<select ng-options="i as i for i in parameters[offerType].SomeKey"
        ng-model="itemSelected.aQuiteLongProperty[offerType].SomeKey.parameterValue"
        ng-change="validateSomeKey(itemSelected.aQuiteLongProperty[offerType].SomeKey.parameterValue)">
</select>

---
$scope.validateSomeKey = function (val) {
     // check if the data is consistent 
};

如您所见,ng-model 有点冗长,所以我想避免 ng-change 指令中的重复。有没有办法访问select/input 新值(选择的选项或输入的数据),不像How to Assign value with ng-change in angular js ,但以一种通用的方式?

我想要这样的东西:

<select ng-options="i as i for i in parameters[offerType].SomeKey"
        ng-model="itemSelected.aQuiteLongProperty[offerType].SomeKey.parameterValue"
        ng-change="validateSomeKey($this.value)">
</select>

我试图检查this对象,我没有找到我想要的数据...

最佳答案

您不需要在 ngChange 中传递选定的值,它可以在 Controller /指令中使用 scope 访问:

$scope.validateSomeKey = function(){
    /* do something with 
    $scope.itemSelected.aQuiteLongProperty[offerType].SomeKey.parameterValue */
}

或者你可以使用ngInit

<select 
ng-init="selectedValue = model.aVeryLongParentProperty.aVeryLongChildProperty" 
ng-model="selectedValue" 
ng-options="i.name for i in items" ng-change="changed(selectedValue)">
    <option value=""></option>
</select>

Fiddle

关于angularjs - 在 ngChange 指令中访问输入值的通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24865557/

相关文章:

javascript - AngularJS 将 bool 值传递给指令未定义

javascript - 如何根据条件 append 指令

javascript - DevExtreme 和 Angular - 菜单小部件

node.js - 使用套接字 io 实时获取数据不起作用

css - AngularJS 从元素上的不同指令累积样式

javascript - AngularJS 如何使用 ng-repeat $compile 元素?

javascript - Angularjs ng-disabled 按钮用于多个复选框输入

javascript - AngularJs,ng-if 更改文本?

javascript - 如何让AngularJS响应外部请求?

javascript - ng-disabled 指令不起作用