Helpex - Trao đổi & giúp đỡ Đăng nhập
4

Tôi đang nhận được lỗi này The ng-model for md-datepicker must be a Date instance. Currently the model is a: string. Tôi đang sử dụng thời điểm ..

trong tầm nhìn

<md-datepicker ng-model="Model.currentContact.getSetIncorporated" ng-model-options="{ getterSetter: true }" md-placeholder="Enter date"></md-datepicker>

trong mô hình

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;
    }

Ngoài ra, tôi đã thử một số mdLocale.formatDate và parseDate. Phiên bản hiện tại là

$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);
        };

máy chủ đang gửi chuỗi này 2016-09-10T22:00:00.000Z

Khi tôi chuyển đổi chuỗi đó thành đối tượng Date với Date () mới, tôi nhận được kết quả hiển thị ngay trong mdDatePicker nhưng tôi cũng nhận được kết quả Uncaught Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting! phanh trang của mình.

4 hữu ích 0 bình luận 1.3k xem chia sẻ
1

Nó khá đơn giản. Giá trị bạn đang chuyển đến Model.currentContact.getSetIncorporatedlà một chuỗi chứ không phải là ngày.

Đây là một ví dụ về vấn đề - CodePen . Bảng điều khiển hiển thị lỗi.

angular.module('MyApp',['ngMaterial'])

.controller('AppCtrl', function() {
  this.myDate = new Date();
  this.myDate = this.myDate.toString(); // Comment this out to work correctly
});

Câu hỏi này - Làm thế nào để kiểm tra xem một đối tượng có phải là ngày tháng hay không? - sẽ giải thích cách kiểm tra xem bạn đang chuyển một chuỗi hay một ngày.

Cập nhật:

Lý do cho tin nhắn

Lỗi chưa tìm thấy: [$ rootScope: infdig] Đã đạt đến 10 lần lặp lại $ tiêu hóa ().

dường như là vì Contact.prototype.getSetIncorporatedđang trả về một Ngày. Trả về một chuỗi hoạt động nhưng ng-modelyêu cầu phải có Ngày!

Đây là một cách để giải quyết vấn đề đó - CodePen .

angular.module('MyApp',['ngMaterial'])

.controller('AppCtrl', function($scope) {
  this.myDate = new Date();

  this.test = function () {
    return new Date();
  }  
  this.testModel = this.test();
});

Đánh dấu

<div ng-controller="AppCtrl as vm" ng-cloak="" class="datepickerdemoBasicUsage" ng-app="MyApp">
  <md-content>
    <md-datepicker ng-model="vm.testModel"  ng-model-options="{ getterSetter: true }" ng-change="change()"></md-datepicker>
  </md-content>
</div>
1 hữu ích 5 bình luận chia sẻ
0

khi bạn sử dụng thời điểm, bạn phải lấy thuộc tính _d từ thời điểm:

    var _convertStringToDate = function (stringDate) {

        var date;
        if (angular.isString(stringDate)) {
            date = moment(stringDate)._d;
        }

        return date;
    };
0 hữu ích 1 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ javascript angularjs datepicker angular-material , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading