Angular UI 日期选择器 json 设置日期无效

Angular UI Datepicker json set date not working

我有一个 angular-ui 日期选择器,但是当我从 json 远程加载日期时,日期选择器没有 select 日期,但是当我输入它时,它会 select 日期。但它没有在输入中显示为空白输入,当我单击打开日期选择器时,正确的日期是 selected.

我想远程加载日期并显示在日期选择器的日期选择器和输入字段中。

这是我的日期选择器代码:

<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 可以正常工作并正确输出该日期。这就是为什么我觉得奇怪的是,当我像这样输入它时,它 select 是日期选择器中的日期,而不是输入字段中的日期。

$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 获取日期的好方法。

docs 中所述,您需要为 $scope.dt 分配一个值,就像它是正常的 Javascript 日期格式一样。

为了实现这一点,您需要使用 .toDate() instead of .format()

您的代码如下所示:

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