programing

각도 JS 날짜 필터가 작동하지 않습니다.

mailnote 2023. 10. 23. 22:02
반응형

각도 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~하듯이timestampMySQL 데이터베이스 테이블에서.사용하고 있습니다.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필터 없이 표시됩니까?

지원 서비스에서 날짜를 나타내는 문자열을 반환하고 있다고 했습니다.이 문제는 두 가지 방법으로 해결할 수 있습니다.

  1. 서버측 코드를 json date 개체로 반환합니다.
    • 서버 사이드 코드가 반환되는 json을 어떻게 직렬화하는지 확인합니다.
  2. 문자열 날짜를 허용하고 필요한 형식으로 날짜를 반환하는 필터를 직접 작성합니다.
    • 참고: 자체 필터에서 각도 필터를 호출할 수 있습니다.

다음과 같이 필터를 직접 작성할 수 있습니다.

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

반응형