小编典典

我如何表示AngularJS中哪些输入字段已更改

angularjs

我正在使用将数据放置到API的编辑表单(user.html),但是我想避免将所有数据放置在表单中。我只想输入已更改的项目。

我已经看到在处理表单时使用肮脏和原始的方法,但这适用于表单中的任何更改。我也看到了ng-
change的用法,但是我不想触发对一个元素进行更改的动作,只是表示更改后的元素应包含在PUT中。

有人找到一种仅表示已更改的输入字段的方法吗?


阅读 212

收藏
2020-07-04

共1个答案

小编典典

如果将输入formname属性一起放入,然后为输入赋予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对象(非输入字段对象的键前缀为$):

angular.forEach($scope.myForm, function(value, key) {
  if(key[0] == '$') return;
  console.log(key, value.$pristine)
});
// first, true
// last, false
2020-07-04