2017-08-27 104 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

感謝您的解釋:) –