以下代碼例子中,直接將date類型的input標簽與ng-model對應的變量綁定,會出現內存數據和頁面數據不一致的問題。雖然AngularJS是雙向數據綁定,但是如果用下面的方法,在頁面更新date的內容時,內存中的$scope.testDate不會改變;在內存中更新$scope.testDate,頁面上的日期也不會改變。
<input type="date" name="testDate" ng-model="testDate" placeholder="yyyy-MM-dd"/>
原因是AngularJs 的ngModel是引用綁定,而不是值綁定,那就意味着如果ngModel對應的引用對象沒有變,但是引用對象的值發生了改變的話,Angular是檢測不到變化的,因此不會做雙向更新。
對應的糾正方法就是,將日期作為變量的屬性綁定到date類型的input標簽,如下:
$scope.testDate = {
value: new Date();
}
<input type="date" name="testDate" ng-model="testDate.value" placeholder="yyyy-MM-dd"/>