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();