计算AngularJS中的日期。将日期值复制到其他变量

时间:2015-11-17 09:52:12

标签: angularjs

我对日期变量的引用有些麻烦。

我有这样的范围观察:

    $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。

1 个答案:

答案 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