2017-04-20 100 views
0

我正在尝试使用Angular 1.x监视窗体的更改。我正在这样做,这样如果用户在保存数据之前离开页面,我可以显示警告。我能够$观看形式。$ valid就好,但形式。$脏只是永远不会开火。所以要清楚,这个工程:

$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

把我的头撞到墙上足够长的时间后,我想我已经明白了这一点。它似乎是$ 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只是一个值,因为这是所有我们得到的。