AngularJS:检测表单更改

时间:2015-12-07 07:44:29

标签: javascript angularjs

我正在开发一个角度应用程序,我必须检查表单更改,并根据更改执行一些操作。我知道,这可以使用$scope.watch来实现,但这会让我失去成绩。

我想要实现的目标

我已经预先填好了表单,我将使用angular.copy()将表单数据作为参考,并与原始数据进行比较。

我还试过$parsers进行检查,但失败了。那么,有没有办法实现这个目标?

3 个答案:

答案 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。

相关问题