Angular UI Datepicker json设置日期不起作用

时间:2017-08-15 09:24:52

标签: angularjs momentjs angular-ui angular-moment angular-daterangepicker

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

我希望远程加载日期并显示在datepicker的datepicker和input字段中。

这是我的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并像这样写它一切正常。并显示正确的日期&#34; 2017-08-02&#34;那样的。

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

也许你知道在日期选择器中从json获取日期的好方法。

1 个答案:

答案 0 :(得分:1)

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

为了实现这一目标,您需要使用.toDate()代替.format()

您的代码如下:

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