Javascript ng模型在值更改时不更新

Javascript ng模型在值更改时不更新,javascript,angularjs,forms,angularjs-ng-model,Javascript,Angularjs,Forms,Angularjs Ng Model,目前我有两个日期输入。我试图将第二个日期输入设为第一个日期输入的默认值。然后,用户可以将第二个日期输入更改为不同的值(第一个保持不变) 当我更改第一个日期时,第二个日期输入正在更新,但是,ng模型没有对form\u数据的值更改进行建模。to\u date属性,因此这会导致表单仍然无效,即使两个必填字段都已填写 以下是问题的一个例子: angular.module('myApp',[]) .controller('myController',函数($scope){ $scope.form_数据=

目前我有两个日期输入。我试图将第二个日期输入设为第一个日期输入的默认值。然后,用户可以将第二个日期输入更改为不同的值(第一个保持不变)

当我更改第一个日期时,第二个日期输入正在更新,但是,
ng模型
没有对
form\u数据的值更改进行建模。to\u date
属性,因此这会导致表单仍然无效,即使两个必填字段都已填写

以下是问题的一个例子:

angular.module('myApp',[])
.controller('myController',函数($scope){
$scope.form_数据={
自年月日起:,
截止日期:''
};
$scope.f=函数(){
setTimeout(function(){//delay以显示截止日期未更新
console.log($scope.form_data);
}, 1000);
}
});
angular.element(document.ready)(()=>{angular.bootstrap(document,['myApp']);})

表单无效:{{myForm.$invalid}}


这是因为您使用的是
ng value=“form_data.to_date | | form_data.from_date | date:'yyyyyy MM dd'”
即,如果
form_data.to_date
存在,则分配它,如果没有,则分配
form_data.from_date
它不会更新ng model的值

为此,您可以按如下方式修改代码:

angular.module('myApp',[])
.controller('myController',函数($scope){
$scope.form_数据={
自年月日起:,
截止日期:''
};
$scope.f=函数(){
setTimeout(函数(){//delay)显示to_日期未更新
如果($scope.form\u data.to\u date==“”){
$scope.form_data.to_date=$scope.form_data.from_date;
}
console.log($scope.form_data);
$scope.$apply();
})
}
});
angular.element(document.ready)(()=>{angular.bootstrap(document,['myApp']);})

表单无效:{{myForm.$invalid}}