1

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

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

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

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

4

1 回答 1

1

如文档中所述,您需要分配$scope.dta 值,就好像它是普通的 Javascript 日期格式一样。

为了实现这一点,您需要使用.toDate()而不是.format()

您的代码如下所示:

$scope.today = function() {
    $scope.dt = moment("2017-08-02", "YYYY-MM-DD").toDate();
};
$scope.today();
于 2017-08-18T14:46:24.053 回答