我正在使用将数据放置到API的编辑表单(user.html),但是我想避免将所有数据放置在表单中。我只想输入已更改的项目。
我已经看到在处理表单时使用肮脏和原始的方法,但这适用于表单中的任何更改。我也看到了ng- change的用法,但是我不想触发对一个元素进行更改的动作,只是表示更改后的元素应包含在PUT中。
有人找到一种仅表示已更改的输入字段的方法吗?
如果将输入form与name属性一起放入,然后为输入赋予name属性,则还可以访问输入的$pristine属性。
form
name
$pristine
<div ng-controller="MyController"> <form name="myForm"> <input type="text" name="first" ng-model="firstName"> <input type="text" name="last" ng-model="lastName"> </form> </div> app.controller('MyController', function($scope) { // Here you have access to the inputs' `$pristine` property console.log($scope.myForm.first.$pristine); console.log($scope.myForm.last.$pristine); });
您可以$scope.myForm.$pristine用来查看是否有 任何 字段更改,以及$pristine表单上每个输入属性的属性来查看 该输入 是否已更改。您甚至可以遍历该myForm对象(非输入字段对象的键前缀为$):
$scope.myForm.$pristine
myForm
$
angular.forEach($scope.myForm, function(value, key) { if(key[0] == '$') return; console.log(key, value.$pristine) }); // first, true // last, false