我正在开发一个角度应用程序,我必须检查表单更改,并根据更改执行一些操作。我知道,这可以使用$scope.watch
来实现,但这会让我失去成绩。
我想要实现的目标
我已经预先填好了表单,我将使用angular.copy()
将表单数据作为参考,并与原始数据进行比较。
我还试过$parsers
进行检查,但失败了。那么,有没有办法实现这个目标?
答案 0 :(得分:6)
您可以使用ng-change
。
从docs - " 在用户更改输入时评估给定的表达式。表达式会立即进行评估,与JavaScript onchange事件不同,后者仅在更改结束时触发(通常,当用户离开表单元素或按下返回键时)。"
Difference between ng-change and $watch
答案 1 :(得分:2)
你尝试过ng-change吗?当ng-model的值发生变化时,它会调用一个函数
<input type="search" ng-change="changeValue()" ng-model="test" name="test"/>
如果您想知道该字段调用该函数,您可以将该名称添加为字符串参数
<input type="search" ng-change="changeValue('field1')" ng-model="field1" name="field1"/>
在控制器中不要忘记将函数changeValue放在范围
中 $scope.changeValue = function(fieldname){
switch (fieldname){
case 'field1' : .... break;
case 'field2' : .... break;
case 'field3' : .... break;
...
}
}
答案 2 :(得分:0)
将复制的对象与原始表单数据进行比较时,如果要检查更改,可以使用angular.equals。
angular.equals(formObj, formObjCopy)
这将对对象及其嵌套的子属性进行深度比较,如果对象未更改则返回true。