我正在尝试使用Angular 1.x监视对表单的更改。我这样做是为了在用户导航离开页面之前我可以显示警告,然后再保存数据。我能够观察表格。$有效,但形式。$脏只是永远不会开火。所以要明确,这有效:
$scope.$watch('forms.editForm.$valid', function (newVal, oldVal) {
// This is how we tell if there are unsaved form changes so we don't navigate away
$scope.unsavedFormChanges = oldVal;
}, true);
这不是:
$scope.$watch('forms.editForm.$dirty', function (newVal, oldVal) {
// This is how we tell if there are unsaved form changes so we don't navigate away
$scope.unsavedFormChanges = oldVal;
}, true);
任何人都可以请教我,为什么我不能看$脏,如果有这样做的备份计划? - 谢谢
答案 0 :(得分:1)
将我的头撞到墙上足够长的时间之后,我想我已经想到了这一点。似乎$ valid是一个对象,$ dirty是一个值。这就是第三个参数的来源。$ watch语句末尾的“true”告诉$ watch它正在观看什么。 True表示它是一个对象,False表示它是一个值。话虽如此,这有效:
$scope.$watch('forms.editForm.$dirty', function (value) {
// This is how we tell if there are unsaved form changes so we don't navigate away
$scope.unsavedFormChanges = value;
$log.info('Form Dirty Changed: ' + value);
}, false);
我还将oldval / newval更改为一个值,因为这就是我们所得到的。