각도 JS 날짜 필터가 작동하지 않습니다.
저는.ng-repeat
순환할 요소$http.get()
결과.
<tr ng-repeat="blog in posts">
<td style="text-align:center">{{ $index+1 }}</td>
<td>{{ blog.title }}</td>
<td>
{{ blog.author.name }}
</td>
<td>
{{ blog.created_at | date:'MMM-dd-yyyy' }}
</td>
</tr>
있습니다created_at
~하듯이timestamp
MySQL 데이터베이스 테이블에서.사용하고 있습니다.angular.js v1.0.7
.
db table에서 같은 출력을 받고 있는데 date filter가 작동하지 않습니다.어떻게 해결해야 합니까?
내 아약스 전화는
$http({method: 'GET', url: 'http://localhost/app/blogs'}).
success(function(data, status, headers, config) {
$scope.posts = data.posts;
}).
error(function(data, status, headers, config) {
$scope.posts = [];
});
필터에 전달된 날짜는 javascript Date 유형이어야 합니다.
그 값이 얼마인지 확인해보셨습니까?blog.created_at
필터 없이 표시됩니까?
지원 서비스에서 날짜를 나타내는 문자열을 반환하고 있다고 했습니다.이 문제는 두 가지 방법으로 해결할 수 있습니다.
- 서버측 코드를 json date 개체로 반환합니다.
- 서버 사이드 코드가 반환되는 json을 어떻게 직렬화하는지 확인합니다.
- 문자열 날짜를 허용하고 필요한 형식으로 날짜를 반환하는 필터를 직접 작성합니다.
- 참고: 자체 필터에서 각도 필터를 호출할 수 있습니다.
다음과 같이 필터를 직접 작성할 수 있습니다.
app.filter('myDateFormat', function myDateFormat($filter){
return function(text){
var tempdate= new Date(text.replace(/-/g,"/"));
return $filter('date')(tempdate, "MMM-dd-yyyy");
}
});
템플릿에서 이렇게 사용할 수 있습니다.
<td>
{{ blog.created_at | myDateFormat }}
</td>
반환된 배열을 순환한 다음 필터를 적용하는 것보다
서버 측에서 다음을 반환합니다.created_at
라라벨 웅변에서 나온 현악기.
이것은 이 자바스크립트를 이용하여 해결할 수 있습니다.
new Date("date string here".replace(/-/g,"/"));
그래서 암호는,
$http({method: 'GET', url: 'http://localhost/app/blogs'}).
success(function(data, status, headers, config) {
angular.forEach(data.posts, function(value, key){
data.posts[key].created_at = new Date(data.posts[key].created_at.replace(/-/g,"/"));
}
$scope.posts = data.posts;
}).
error(function(data, status, headers, config) {
$scope.posts = [];
});
문자열을 날짜로 변환하는 사용자 지정 필터를 다음 코드로 추가할 수 있습니다.
app.filter('stringToDate',function ($filter){
return function (ele,dateFormat){
return $filter('date')(new Date(ele),dateFormat);
}
})
그런 다음 템플릿에서 이 필터를 다음 코드로 사용합니다.
<div ng-repeat = "a in data">{{a.created_at |stringToDate:"medium"}}</div>
만들 수 있습니다.new Date(/*...*/)
에서 가져온 데이터를 바탕으로$http.get
, 예:
$scope.date = new Date('2013', '10', '28'); // for example
어쨌든 이 데모는 에서 보실 수 있습니다.
도움이 되기를 바랍니다.
날짜 변수를 기록할 때는 다음과 같이 'new' 키워드를 사용해야 합니다.
var time = new Date();
그렇지 않으면 다음과 같이 적습니다.
var time = Date();
날짜가 함수로 호출되며 필터에 입력할 수 없는 날짜 시간 문자열이 반환됩니다.
언급URL : https://stackoverflow.com/questions/19653584/angular-js-date-filter-not-working
'programing' 카테고리의 다른 글
내 계정에 휴대폰 추가 > 우커머스 계정 편집 필드 (0) | 2023.10.28 |
---|---|
Internet Explorer(인터넷 익스플로러) 및 jQuery(jQuery)를 사용한 "사용 권한 거부" (0) | 2023.10.23 |
MySQL 표준 시간대 (0) | 2023.10.23 |
팬더는 가장 자주 열의 값을 얻습니다. (0) | 2023.10.23 |
정수 대 IP 주소 - C (0) | 2023.10.23 |