2017-08-27 100 views
2

我有一个应用程序,我现在正在测试,除了一部分以外,一切都可以正常工作。日期过滤器不能正常工作

日期过滤器每两次只能工作一次。 我检查邮递员和BDD,日期是正确的,但我不明白为什么而不是显示日期它显示我“null”。

下面是截图和我的代码:enter image description here

我的观点:

<ion-list id="ficheJeune-list10"> 
    <ion-item id="ficheJeune-list-item22" ng-repeat="element in patient.cr track by $index" ng-click="showDescr(patient.id, element)"> 
    <div class="col col-sm-50">Compte Rendu du :</div> 
    <div class="col col-sm-50 date">{{ element.date | dateOnly: "dd MMMM y" }}</div> 
    </ion-item> 
</ion-list> 

我的过滤器:

.filter('dateOnly', [ 
'$filter', function($filter) { 
    return function(input, format) { 
     return $filter('date')(new Date(input), format); 
    }; 
} 
    ]) 

周一JSON:

{ 
"id": 50, 
"prenom": "Jonathan", 
"cr": [ 
    { 
     "date": "12 mars 2010", 
     "lieu": test 
    }, 
    { 
     "date": "05 mars 2010", 
     "lieu": test 
    }, 
    { 
     "date": "04 mai 2006", 
     "lieu": test 
    }, 
    { 
     "date": "27 avril 2006", 
     "lieu": test 
    }, 
    { 
     "date": "14 avril 2006", 
     "lieu": test 
    }, 
    { 
     "date": "07 avril 2006", 
     "lieu": test 
    }, 
    { 
     "date": "23 mars 2006", 
     "lieu": test 
    }, 
    { 
     "date": "16 mars 2006", 
     "lieu": test 
    } 
] 
} 

我找遍了所有天这是什么原因,但我不能找到..

我感谢你在

+0

请张贴JSON数据 –

+0

我编辑我的问题把JSON –

回答

1

我认为你需要编写从法国转换月份名称为英语自定义地图。

在你的情况下,maiavril失败。

Demo represents the issue

.filter('dateOnly', [ 
'$filter', function($filter) { 

    var mappingMonth = { 
    "avril": "april", 
    "mars": "march", 
    "mai" : "may"  
    }; // and so on 

    return function(input, format) { 

     input = input.split(" ")[0] + " " + mappingMonth[input.split(" ")[1]] + " " + input.split(" ")[2] 

     return $filter('date')(new Date(input), format); 
     }; 
    } 
    ]) 

Fixed demo

+0

好的,我明白这几个月发生了什么事。 但我不明白为什么它不会为其他几个月^^ –

+0

@LydiaRa更新回答与修复 –

+0

@MaximShoustin谢谢你的答案;) 我也想了解为什么它的工作有时,有时不是? – DaxDev

0

这是因为你的日期格式是错误的。例如更改为maimay。 看到演示的流动:

var app = angular.module('myApp', []); 
 
app.controller('datCtrl', function($scope) { 
 
    $scope.today = new Date(); 
 
    $scope.data = { 
 
"id": 50, 
 
"prenom": "Jonathan", 
 
"cr": [ 
 
    { 
 
     "date": "12 mars 2010", 
 
    "lieu": "test" 
 
    }, 
 
    { 
 
     "date": "05 mars 2010", 
 
     "lieu": "test" 
 
    }, 
 
    { 
 
     "date": "04 may 2006", 
 
     "lieu": "test" 
 
    }, 
 
    { 
 
     "date": "27 apr 2006", 
 
     "lieu": "test" 
 
    }, 
 
    { 
 
     "date": "14 aprww 2006", 
 
     "lieu": "test" 
 
    }, 
 
    { 
 
     "date": "07 apr 2006", 
 
     "lieu": "test" 
 
    }, 
 
    { 
 
     "date": "23 mars 2006", 
 
     "lieu": "test" 
 
    }, 
 
    { 
 
     "date": "16 mars 2006", 
 
     "lieu": "test" 
 
    } 
 
] 
 
} 
 
}); 
 
app.filter('dateOnly', [ 
 
'$filter', function($filter) { 
 
    return function(input, format) { 
 
     return $filter('date')(new Date(input), format); 
 
    }; 
 
} 
 
    ]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="datCtrl"> 
 
    <div id="ficheJeune-list-item22" ng-repeat="element in data.cr"> 
 
    <div class="col col-sm-50 date">{{ element.date | dateOnly: "dd MMMM y" }} </div> 
 
    </div> 
 
</div>

+0

好吧,我明白这是怎么回事了这几个月。 但我不明白为什么它不为其他月份^^ –

+1

日期格式为只有前3个字符和其他月份只是'mars'在这里。因此,对于'mars'是'mar'的前三个字母,格式是正确的。例如,我将'apr'改为'aprww',但它仍然是正确的。 –

+0

感谢您的解释:) –