我能够使用$ dirty更改或不更改表单数据。
例如:我更改了文本框或下拉,然后$ dirty变为true。如果我还原旧数据仍然是真的。我需要知道我的更改是否还原。我们在Angularjs有房产吗?如果属性为true,我想启用保存按钮,否则应该禁用。
https://docs.angularjs.org/api/ng/type/form.FormController
我需要实现大约10页,每页有10个文本框和几个下拉菜单。所以我不想在我的页面中手动跟踪每个控件。
答案 0 :(得分:0)
您可以尝试使用此模块:https://github.com/betsol/angular-input-modified
来自README文件:
此Angular.js模块为其添加了其他属性和方法 ngModel和ngForm控制器,以及CSS类 底层表单元素,为最终用户提供检测设施 并指出表格数据的变化。
此额外功能可让您提供更好的可用性 形式。例如,您可以向表单元素添加装饰 实际上是改变了。这样,用户将看到哪些值已更改 自上次编辑以来。
此外,您可以重置整个表单或仅重置一个字段 只需一次调用即可初始状态(取消所有用户编辑) reset()方法或通过调用锁定新值(保留新状态) 重载$ setPristine()方法。
免责声明:我自己没有尝试过,我发现作者会覆盖ngModel
指令而不是adding a decorator,这可能很危险......但是至少,您可以查看源代码并了解如何使用类似功能编写自己的服务或指令。
答案 1 :(得分:0)
Even though it does not follow the usage of $dirty
, but an implementation similar to this might be helpful for you in the case of a Save button on update.
Inside your html:
<form name="testForm" ng-controller="ExampleController" ng-submit=" save()">
<input ng-model="val" ng-change="change()"/>
<button ng-disabled="disableSave">Save</button>
</form>
Inside your controller:
.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;
};
}]);
Here is a working plunkr for the same.