角度材质DatePicker date.toLocaleDateString不是函数

时间:2015-09-09 01:50:36

标签: angularjs angular-material

我正在尝试使用角度材质日期选择器,并收到以下错误:

TypeError: date.toLocaleDateString is not a function
at Object.defaultFormatDate [as formatDate] (angular-material.js:6860)
at DatePickerCtrl.configureNgModel.ngModelCtrl.$render (angular-material.js:7184)
at Object.<anonymous> (angular.js:25233)
at m.a.$get.m.$digest (angular.js:15707)
at m.a.$get.m.$apply (angular.js:15986)
at g (angular.js:10511)
at L (angular.js:10683)
at XMLHttpRequest.A.onload (angular.js:10624)

我在这里从代码笔中取了示例: https://material.angularjs.org/latest/#/demo/material.components.input

相关的HTML代码:

            <div layout="" layout-sm="column">
            <md-input-container style="width:70%">
                <label>Company (Disabled)</label>
                <input ng-model="user.company" disabled="">
            </md-input-container>

            <md-datepicker ng-model="date" md-placeholder="Enter date"></md-datepicker>
        </div>

我的控制器

$scope.date={};
$scope.$watch('date', function () {
    console.log($scope.date);
});

4 个答案:

答案 0 :(得分:4)

toLocaleDateString是日期对象的本机方法,因此看起来您的md-datepicker未绑定到日期。如果没有HTML和填充数据的代码,很难确定,但这是最可能的原因。

答案 1 :(得分:0)

您的date对象很可能不属于Date类型,请确保它仅属于该类型,而不是string或其他类型。

这就是我遇到这个问题的原因,以及我是如何解决它的。希望这会有所帮助。

答案 2 :(得分:-1)

我遇到了这个错误,因为我正在尝试将格式字符串值分配给与md-datepicker绑定的模型,该模型是保持javascript日期类型 像这样

$scope.eventdate = $filter('date')($scope.eventdate, 'yyyy-MM-dd');

解决方案是为md-datepicker声明新模型并获得它的值

on js

$scope.eventdate = $filter('date')($scope.mddate, 'yyyy-MM-dd');

on html

 <md-datepicker ng-model="mddate" md-placeholder="Enter date" required></md-datepicker>

希望这可以帮到你

答案 3 :(得分:-1)

我有完全相同的问题,但上面的答案没有帮助。

使用新的Date()初始化datepicker有效,但是当尝试使用从服务器返回的值进行初始化时,我得到了上面的错误 - 尽管它们看起来似乎是相同的格式。

最后,我必须显式创建一个Date对象,然后使用Parse设置它的值。

        var date = ctrl.data.fromServer;
        ctrl.data.fromServer= new Date();
        if (date != undefined)
        {
            ctrl.data.fromServer.setTime(Date.parse(date));
        }