2013-02-08 1 views

답변

101

나는 momentjs - http://momentjs.com/을 사용할 것입니다 - 의존성은 없습니다.

그러면 'timeAgo'또는 'fromNow'라는 필터를 만들면됩니다. 그 momentjs 그것을 부르는 때문에 당신은 아마 fromNow를 호출한다 : 당신은 단지보기에 바인딩 간단한 데이터 사용합니다

다음
angular.module('myApp').filter('fromNow', function() { 
    return function(date) { 
    return moment(date).fromNow(); 
    } 
}); 

: 당신이 정말 jQuery 플러그인을 사용하고자하는 경우

<p>Pizza arrives {{pizzaArrivalDate | fromNow}}</p> 

을, 당신 아마도 지침을 작성해야 할 것입니다. 그러나 데이터를 DOM 요소에 연결하기 때문에 그렇게하는 것은 좋지 않습니다. 위의 방법은 각도 방식의 DOM에서 데이터를 분리합니다. 귀엽습니다 :-D

+2

행동을 체크 아웃 할 수

<div>{{ date | moment:'fromNow' }}</div> <div>{{ date | moment:'calendar' }}</div> 

처럼 사용 ...하지만이 솔루션은 바로, 시간이 진행됨에 따라 시간을 업데이 트하지 않습니다? – Ztyx

+0

그렇지 않습니다. 하나 또는 그 이상의 요소를 새로 고침하는 지시문을 원할 것입니다 (범위를 지정하지 않으려 고합니다. $ 분마다 적용, 요소의 텍스트 만 업데이트). –

+1

어떻게하는지 알아 내려고 잠시. "권"이 게시 한 지침을 사용하는 것은 나를 위해하지 않았습니다. 밖으로 나왔다, 나는 title 속성을보아야했다. 예를 보려면 https://gist.github.com/JensRantil/5470122를 참조하십시오. – Ztyx

4

jQuery가 필요한 경우 지시어/필터를 작성하는 것이 좋습니다.

app.directive("timeAgo", function($compile) { 
    return { 
    restrict: "C", 
    link: function(scope, element, attrs) { 
     jQuery(element).timeago(); 
    } 
    }; 
}); 

app.filter("timeAgo", function() { 
    return function(date) { 
    return jQuery.timeago(date); 
    }; 
}); 

Directive and/or Filter (jsbin)

+0

지시문을 사용하는 것이 시간이 경과함에 따라 datetime을 자동으로 업데이트하는 유일한 방법입니다. – Ztyx

+1

"$ compile"종속성은 해당 지시문에 필요하지 않습니다. – Ztyx

+0

위의 지시문은 "title"속성의 datetime이 "{{...}}"구문으로 생성 된 경우를 처리하지 않습니다. 이 문제를 해결하는 방법은 https://gist.github.com/JensRantil/5470122를 참조하십시오. – Ztyx

20

당신은 (momentjs을 기반으로) angular-moment 모듈에서 am-time-ago 지시어를 사용할 수 있습니다.

jQuery가 필요하지 않으며 시간이 갈수록 시간이 업데이트됩니다. 예 :

<span am-time-ago="lastLoginTime"></span> 

상기 범위의 함유량은, "2 시간 전", 예를 들어, 상대적으로 시간 문자열로 치환되고, 시간이 진행됨에 따라 자동으로 갱신한다.

+1

위대한 발견 urish! 명시된대로 작동하고 업데이트됩니다. 참고 사항 : 앱에 종속성을 추가하는 것을 잊지 마세요. 각 도형 문서를 참조하십시오. –

+1

@urish : 'am-time-ago'을 맞춤 형식으로 사용할 수있는 방법이 있습니까? "2 시간 전"대신 "2 시간"? –

+0

'의 형식을 사용자 정의에 대한 대답을 여기보기는 AM-시간 ago' : http://stackoverflow.com/questions/22964767/how-to-format-angular-moments-am-time-ago-directive – urish

6

moment.js가 최선의 선택입니다. 필자는 모든 순간 서식 지정 방법을 사용할 수있는 일반 순간 필터를 만들었습니다.

angular.module('myApp', []) 
    .filter('moment', [ 
    function() { 
     return function (date, method) { 
     var momented = moment(date); 
     return momented[method].apply(momented, Array.prototype.slice.call(arguments, 2)); 
     }; 
    } 
    ]); 

당신은 여기 http://jsfiddle.net/gregwym/7207osvw/

관련 문제