md- datePicker - Date instance error always
我收到此错误
在视野中
1 | <md-datepicker ng-model="Model.currentContact.getSetIncorporated" ng-model-options="{ getterSetter: true }" md-placeholder="Enter date"></md-datepicker> |
在模型中
1 2 3 4 5 6 7 8 9 10 11 12 13 | Contact.prototype.getSetIncorporated = function(date) { if (arguments.length) { this.company.information.incorporatedObject = date; this.company.information.incorporated = moment.utc(date).format('X'); } if (!this.company.information.incorporatedObject) { if (this.company.information.incorporated !== '') { this.company.information.incorporatedObject = moment.utc(this.company.information.incorporated, 'X').toDate(); } else { this.company.information.incorporatedObject = null; }} return this.company.information.incorporatedObject; } |
我也尝试了几个mdLocale.formatDate和parseDate。 目前的版本是
1 2 3 4 5 6 7 8 9 10 | $mdDateLocale.formatDate = function(date) { return moment(date).format('YYYY/MM/DD'); }; $mdDateLocale.parseDate = function(dateString) { var m = moment(dateString, 'YYYY/MM/DD', true); return m.isValid() ? m.toDate() : new Date(NaN); }; |
服务器正在发送此字符串
当我使用新的Date()将该字符串转换为Date对象时,我在mdDatePicker中显示正确的结果,但我也得到了
哪个刹车我的页面。
这很简单。 传递给
以下是问题的一个示例 - CodePen。 控制台显示错误。
1 2 3 4 5 6 | angular.module('MyApp',['ngMaterial']) .controller('AppCtrl', function() { this.myDate = new Date(); this.myDate = this.myDate.toString(); // Comment this out to work correctly }); |
这个问题 - 如何检查对象是否是日期? - 将解释如何检查您是否传递字符串或日期。
更新:
消息的原因
Uncaught Error: [$rootScope:infdig] 10 $digest() iterations reached.
似乎是因为
这是解决这个问题的一种方法 - CodePen。
1 2 3 4 5 6 7 8 9 10 | angular.module('MyApp',['ngMaterial']) .controller('AppCtrl', function($scope) { this.myDate = new Date(); this.test = function () { return new Date(); } this.testModel = this.test(); }); |
标记
1 2 3 | <md-content> <md-datepicker ng-model="vm.testModel" ng-model-options="{ getterSetter: true }" ng-change="change()"></md-datepicker> </md-content> |
当你使用片刻时,你必须从瞬间获取_d属性:
1 2 3 4 5 6 7 8 9 | var _convertStringToDate = function (stringDate) { var date; if (angular.isString(stringDate)) { date = moment(stringDate)._d; } return date; }; |