2015-11-17 27 views
0

我對日期變量的引用有一些問題。在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

請嘗試下面的代碼。

$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

+0

感謝它的工作,但爲什麼我的例子不工作? – Greg

+0

@ user3475722編輯我的答案。如果問題解決,請閱讀並接受。 – Vivek