1

我有一個angular-ui datepicker,但是當我從json遠程加載日期時,datepicker沒有選擇日期,但是當我鍵入它時,它確實選擇了日期。但它沒有在輸入中顯示它的空白輸入,當我點擊打開日期選擇器時,選擇正確的日期。Angular UI Datepicker json設置日期不工作

我想將日期加載到遠程並顯示在datepicker的日期選擇器和輸入字段中。

這是我的日期選擇器代碼:

<input type="text" class="form-control" uib-datepicker-popup ng-model="dt" ng-click="open()" ng-change="testFun(dt)" is-open="popup.opened" datepicker-options="dateOptions" ng-required="true" close-text="Close" /> 
<span class="input-group-btn"> 
    <button type="button" class="btn btn-default" ng-click="open()"><i class="glyphicon glyphicon-calendar"></i></button> 
</span> 

代碼來設置日期:

$scope.today = function() { 
    $scope.dt = moment($scope.tenderDate, "YYYY-MM-DD").format(); 
}; 
$scope.today(); 

$ scope.tenderDate如下:

$ scope.tenderDate = $ scope.data.items.Date;

這是本在JSON

{ 
    "Date":"2017-08-02" 
} 

的$ scope.tenderDate工作以及在此日期正確輸出。這就是爲什麼我覺得奇怪的是,當我像這樣輸入它時,它會在日期選擇器中選擇日期,而不是在輸入字段中。

$scope.today = function() { 
    $scope.dt = moment("2017-08-02", "YYYY-MM-DD").format(); 
}; 
$scope.today(); 

而沒有使用momentjs並且像這樣寫它,它一切正常。並顯示正確的日期「2017-08-02」。

$scope.today = function() { 
    $scope.dt = new Date(2017, 7, 2); 
}; 

也許你知道從日期選擇器中獲取json日期的好方法。

回答

1

正如在docs中所提到的那樣,您需要將$scope.dt的值指定爲正常的Javascript日期格式。

爲了達到這個目的,您需要使用.toDate()而不是.format()

你的代碼是這樣:

$scope.today = function() { 
    $scope.dt = moment("2017-08-02", "YYYY-MM-DD").toDate(); 
}; 
$scope.today();