0
我对日期变量有ng-model。在更改该变量时,我想进行一些验证,在验证过程中,我可能会更改启动变量本身,并确保我无法获得无限监视触发器,我将取消注册此表,当验证结束时注册它。
重新注册不起作用。我究竟做错了什么?
var watchStartTime = $scope.$watch('timeSelection.startTime', function(newValue, oldValue) {
if (newValue === oldValue) return;
validateStartEndTime();
}, true);
function validateStartEndTime() {
// De-register watch
watchStartTime();
// Do some stuff that might change timeSelection.startTime
// Re-register watch
watchStartTime();
}
我也尝试setTimeout与0重新注册,认为它可能工作,但它没有。
timeSelection.startTime
更改(我知道这是事实)但$ watch中的函数不会再被调用。
我错过了什么?
'ng-change'怎么样?或者只是检查'yourForm.yourDate。$ error'是否不存在(并显示可视提示/禁用任何“发送”功能?) –
我使用引导程序的datePicker,由于某种原因,ng-change从未被触发,但是我猜这是一个单独的问题。 加上startTime可能会从控制器的某个地方改变,而不仅仅是GUI – AlexD
'$ watch'返回的函数只是一个注销函数。要再次注册,您必须再次使用相同的参数调用'$ watch()'。 –