简体   繁体   English

Angular Moment Picker 库中的日期格式问题

[英]Date format issue in Angular Moment Picker library

I have below code in my HTML and using Angular v 1.6.3 along with angular moment picker from https://github.com/indrimuska/angular-moment-picker .我的 HTML 中有以下代码,并使用 Angular v 1.6.3 以及来自https://github.com/indrimuska/angular-moment-picker 的角力矩选择器。 I want to display calendar using format DD-MM-YYYY .我想使用DD-MM-YYYY格式显示日历。

<div moment-picker="member.memberSince"
    format="DD-MM-YYYY"
    max-view="month"
    start-view="month"
    autoclose="true"
    today="true"
    ng-model="member.memberSince"
    start-date="member.memberSince | date : 'dd-MM-yyyy'">
    {{ member.memberSince | date : 'dd-MM-yyyy' || "Select a date" }}
</div>

I have two problems我有两个问题

  1. When I set member.memberSince from JS code on page load, date is displayed fine eg 01-04-2017 .当我在页面加载时从 JS 代码设置member.memberSince ,日期显示正常,例如01-04-2017 But when I select the date from calendar, it shows the date in undesired format eg Sat Apr 01 2017 00:00:00 GMT+0530 .但是当我从日历中选择日期时,它以不需要的格式显示日期,例如Sat Apr 01 2017 00:00:00 GMT+0530

在此处输入图片说明

在此处输入图片说明

  1. If I don't set member.memberSince , then I can't see any control on page to select calendar.如果我没有设置member.memberSince ,那么我在页面上看不到任何控件来选择日历。

在此处输入图片说明

How should I solve this problem?我应该如何解决这个问题?

Plunker普朗克

There are multiple issues here.这里有多个问题。

Let's have a look at docs |让我们看看文档 | angular-moment-picker #options first, angular-moment-picker #options首先,

moment-picker : Two-way bindable property as formatted datetime string . moment-picker :作为格式化日期时间字符串的双向可绑定属性。

ng-model : Two-way bindable property as Moment.js object . ng-model :作为Moment.js 对象的双向可绑定属性。

Now, we should not have both set to same property for obvious reasons.现在,出于显而易见的原因,我们不应该将两者都设置为相同的属性。 If you have provided ng-model with same property, it seem to give precendence to that and sets the property to Moment.js object.如果您为ng-model提供了相同的属性,它似乎优先考虑并将该属性设置为 Moment.js 对象。

Next, when you have {{memberSince | date : 'dd-MM-yyyy' || "Select a date"}}接下来,当你有{{memberSince | date : 'dd-MM-yyyy' || "Select a date"}} {{memberSince | date : 'dd-MM-yyyy' || "Select a date"}} {{memberSince | date : 'dd-MM-yyyy' || "Select a date"}} (where memberSince is set to ng-model ), which initially had a string / Date object. {{memberSince | date : 'dd-MM-yyyy' || "Select a date"}} (其中memberSince设置为ng-model ),它最初有一个string / Date对象。 But when you select a date, it again becomes Moment.js object which doesn't comply to date:'<my-dateformat>' obviously.但是当你选择一个日期时,它又变成了不符合date:'<my-dateformat>' Moment.js 对象。

Solution to your problem (if you haven't figured out yet), would be to remove ng-model set to the directive.您的问题的解决方案(如果您还没有弄清楚),将删除设置为指令的ng-model And you can freely access memberSince from moment-picker="memberSince" since it would be a formatted string in your provided format ie DD-MM-YYYY .您可以从moment-picker="memberSince"自由访问memberSince ,因为它将是您提供的格式的格式化字符串,即DD-MM-YYYY

And in HTML, you can use {{ memberSince || "Select a date" }}在 HTML 中,您可以使用{{ memberSince || "Select a date" }} {{ memberSince || "Select a date" }} without needing to use Angular's date filter since memberSince is just a string containing your selected date in provided format. {{ memberSince || "Select a date" }}无需使用 Angular 的date过滤器,因为memberSince只是一个字符串,其中包含您选择的日期格式。

working plunker工作笨蛋

The two bindings ( ng-modal ) of AngularJS are not working on div . AngularJS 的两个绑定( ng-modal )不适用于div So try something like this:所以尝试这样的事情:

<div ng-app="myApp" ng-controller="myCtrl">
<div
    moment-picker="member.datepicker"
    max-view="month"
    start-view="month"
    format="DD-MM-YYYY"
    autoclose="true"
    today="true"
   >Member Sience
  {{ member.datepicker | date:'dd-MM-yyyy' || 'Select a date' }}
</div>    

<script>
var app = angular.module('myApp', ['moment-picker']);
app.controller('myCtrl', function($scope) {
     $scope.member ={
        datepicker:new Date()
     }
});
</script>

您可以使用 locale="en" 和 format="DD-MM-YYYY hh:mm a" ,然后它将起作用

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM