Angularjs表格$dirty

Angularjs表格$dirty,angularjs,Angularjs,我可以找到表单数据已更改或未使用$dirty 我更改了文本框或下拉列表,然后$dirty变为true。如果我恢复到旧数据,它仍然是真的。我需要知道我的更改是否恢复。我们在Angularjs有房产吗?如果属性为true,我想启用保存按钮,否则它应该禁用 我需要实现大约10个页面,每个页面有10个文本框和几个下拉列表。因此,我不希望在我的页面中手动跟踪每个控件。您可以尝试使用此模块: 从自述文件: 此Angular.js模块向 ngModel和ngForm控制器,以及 为最终用户提供检测功能的基础

我可以找到表单数据已更改或未使用$dirty

我更改了文本框或下拉列表,然后$dirty变为true。如果我恢复到旧数据,它仍然是真的。我需要知道我的更改是否恢复。我们在Angularjs有房产吗?如果属性为true,我想启用保存按钮,否则它应该禁用


我需要实现大约10个页面,每个页面有10个文本框和几个下拉列表。因此,我不希望在我的页面中手动跟踪每个控件。

您可以尝试使用此模块:

从自述文件:

此Angular.js模块向 ngModel和ngForm控制器,以及 为最终用户提供检测功能的基础表单元素 并指示表单数据中的更改

这个额外的功能可以让你提供更好的可用性 形式。例如,可以将装饰添加到 事实上,这些都改变了。这样,用户将看到哪些值已更改 自从上次编辑以来

此外,您还可以将整个表单或单个字段重置为 初始状态(取消所有用户编辑),只需调用 方法或仅通过调用 重载$setPristine()方法


免责声明:我自己没有尝试过,我注意到作者覆盖了
ngModel
指令,而不是,这可能很危险……但至少,您可以查看源代码,了解如何编写具有类似功能的自己的服务或指令。

即使它不遵循
$dirty
的用法,但类似的实现可能会对您在更新时使用“保存”按钮有所帮助

在html中:

<form name="testForm" ng-controller="ExampleController" ng-submit=" save()">
  <input ng-model="val" ng-change="change()"/>
  <button ng-disabled="disableSave">Save</button>
</form>

是一个同样适用的plunkr。

我需要实现大约10页,每页有10个文本框和几个下拉列表。所以我不想跟踪页面中的每个控件。这就是为什么我要问angularjs的财产。
.controller('ExampleController', ['$scope', function($scope) {
  $scope.disableSave = true;  // Keep save button disabled initially

  $scope.val = 'Initial';  // Initial value of the variable

  var copyVal = $scope.val; // Copy Initial value into a temp variable 

  $scope.change = function() {
    $scope.disableSave = $scope.val === copyVal;
  };

  $scope.save = function() {
    // Save the updated value (inside $scope.val)
    console.log($scope.val);

    // Re-disable the input box (on successful updation)
    copyVal = $scope.val;
    $scope.disableSave = true;

  };
}]);