2017-08-27 16 views
2

私は、現時点では、テストアプリケーションを持って、すべてが一部から完全に離れて動作します。日付フィルタが正しく

日付フィルタは、一度だけ、すべての2作品。 私はPostmanと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

私はあなたがフランス語から英語への月の名前を変換したカスタムマップを記述する必要があると思います。あなたのケースmai

avrilは失敗します。

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'が' mar'で、formatには正しい最初の3文字を取るようにします。例えば、 'apr'を' aprww'に変更しますが、それでも正しくwokです。 –

+0

説明をありがとう:) –