Angular - $表示无效的表单上的$ dirty?

时间:2017-04-20 21:15:45

标签: angularjs angularjs-scope

我正在尝试使用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);

任何人都可以请教我,为什么我不能看$脏,如果有这样做的备份计划? - 谢谢

1 个答案:

答案 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更改为一个值,因为这就是我们所得到的。