我对日期变量的引用有些麻烦。
我有这样的范围观察:
$scope.$watch(
"vm.firstdate",
function handleFooChange( newValue, oldValue ) {
console.log( "vm.firstdate:", newValue );
//Get create date
var myCreateDate = vm.firstdate;
var myDate = myCreateDate ;
myDate.setHours(myDate.getHours() + 24*(newValue));
console.log(myDate);
vm.secondDate = myDate
}
);
问题是vm.firstdate也会更改为第二个日期的值。 如何在不修改vm.firstdate的情况下更改vm.secondDate。
答案 0 :(得分:1)
请尝试以下代码。
$scope.$watch(
"vm.firstdate",
function handleFooChange( newValue, oldValue ) {
console.log( "vm.firstdate:", newValue );
//Get create date
var myDate = angular.copy(vm.firstdate);
myDate.setHours(myDate.getHours() + 24*(newValue));
console.log(myDate);
vm.secondDate = myDate
}
);
第一个日期也在发生变化的原因是指向vm.firstdate
的引用被修改后被分配到vm.secondDate
。使用angular.copy(vm.firstdate)
将构建vm.firstdate
&的新实例。对此实例的任何修改都不会影响vm.firstdate
。