Javascript 角力矩选择器库中的日期格式问题

Javascript 角力矩选择器库中的日期格式问题,javascript,angularjs,date,momentjs,angular-moment,Javascript,Angularjs,Date,Momentjs,Angular Moment,我的HTML中有以下代码,使用Angular V1.6.3以及来自的Angular力矩选择器。我想使用格式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"

我的HTML中有以下代码,使用Angular V1.6.3以及来自的Angular力矩选择器。我想使用格式
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>

{{member.memberSince | date:'dd-MM-yyyy'| | |“选择一个日期”}
我有两个问题

  • 当我从页面加载的JS代码中设置
    member.memberSince
    时,日期是 显示良好,例如
    01-04-2017
    。但是当我从中选择日期时 日历,它以不需要的格式显示日期,例如2017年4月1日星期六00:00:00 GMT+0530

  • 如果我没有设置
    member.memberSince
    ,那么我 在页面上看不到任何用于选择日历的控件
  • 我应该如何解决这个问题

    AngularJS的两个绑定(
    ng modal
    )在
    div
    上不起作用。 因此,请尝试以下方法:

    <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>
    
    
    成员Sience
    {{member.datepicker | date:'dd-MM-yyyy'| |'选择一个日期'}
    var-app=angular.module('myApp',['moment-picker']);
    应用程序控制器('myCtrl',函数($scope){
    $scope.member={
    日期选择器:新日期()
    }
    });
    
    这里有多个问题

    我们先来看看,

    时刻选择器
    :双向可绑定属性作为格式化的日期时间字符串

    ng model
    :作为Moment.js对象的双向可绑定属性

    现在,由于明显的原因,我们不应该将两者设置为相同的属性。如果您提供了具有相同属性的
    ng model
    ,它似乎会优先考虑该属性,并将该属性设置为矩.js对象

    接下来,当您有
    {{memberSince | date:'dd-MM-yyyy'| | | |“选择一个日期”}
    (其中
    memberSince
    设置为
    ng model
    ),它最初有一个
    字符串
    /
    日期
    对象。但当您选择一个日期时,它再次成为Moment.js对象,显然它不符合
    日期:'

    您的问题的解决方案(如果您还没有找到答案的话)是删除指令中的
    ng model
    set。您还可以从
    moment picker=“memberSince”
    自由访问
    memberSince
    ,因为它将是您提供格式的格式化字符串,即
    DD-MM-yyyyy

    <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>
    
    在HTML中,您可以使用
    {{memberSince | | |“Select a date”}
    ,而无需使用Angular的
    date
    过滤器,因为
    memberSince
    只是一个以提供的格式包含所选日期的字符串


    您可以将locale=“en”与format=“DD-MM-YYYY hh:MM a”一起使用,然后创建一个plunker,可能会重现问题?@tanmay plunker补充道。谢谢@tanmay。我已经开始使用angular 2周前,并学习了很多关于它的东西。你的解决方案奏效了,尽管我不能像你在你的车里设定的那样设定日期。这个值作为一个大对象的一部分来自后端,所以我必须在服务器端本身格式化这个值。但是成功了!再次感谢。@Aakash我很高兴这能帮上一点忙!:)文档告诉您将两者设置为同一个对象,这对我来说一直很有效。AngularJS的
    date
    过滤器仅适用于
    date
    对象,而不适用于
    Moment
    对象。