2014-01-28 1 views
1

나는 엠버 (ember)를 처음 사용하기 때문에이 질문이 다른 곳에서 다루어 졌다면 용서해주십시오.Emberjs : 마지막과 다른 경우에만 짹짹을 반복하고 날짜를 표시하는 방법은 무엇입니까?

는 여기에 내가 얻으려고 마크 업의 단순화 된 버전입니다 : 내가 장고에서 오는

<h1>Date1</h1> 
<div>Tweet 1 on Date1</div> 
<div>Tweet 2 on Date1</div> 
<h1>Date2</h1> 
<div>Tweet 3 on Date2</div> 
<div>Tweet 4 on Date2</div> 

을, 그래서 ifchanged 태그를 얻을 수있는 올바른 방법을 무엇 https://docs.djangoproject.com/en/dev/ref/templates/builtins/#ifchanged

사용 해요 이? 나는 핸들바 도우미를 들여다 보았지만, 그들은 무국적으로 보입니다.

답변

1

당신은 할 수 없습니다, 핸들 바는 그러한 작업을 수행하기에는 너무 논리 적이 지 않습니다. 이 템플릿을 템플릿에 전달하기 전에이 템플릿을 정렬해야합니다.

해결 방법 중 하나는 ArrayController 유형의 TweetsController입니다. 그런 다음 배열을 탐색하는 계산 된 속성을 만들고 필터링 된 버전을 반환 할 수 있습니다.

noRepeatedDates: function() { 
    var tweets = []; 

    var lastTweet = Ember.Object.create(); 

    this.get('model').forEach(function(tweet) { 
    if(tweet.get('date') == lastTweet.get('date')) { 
     tweet.set('date', undefined); 
    } else { 
     lastTweet = tweet 
    } 
    tweets.pushObject(tweet); 
    }); 

    return tweets; 
}.property('@each') 

이 코드를 테스트하지는 않았지만 일반적으로 핸들 바를 사용할 때 생각하는 방법을 알려주는 것이 목적입니다.

하지만이 경우 템플릿의 noRepeatedDates를 통과 할 수 있어야합니다. 희망은 내가 도움이됩니다.

+0

재미있는 방법입니다. 컨트롤러에 디스플레이 로직을 넣을 필요가없는 곳에서이 작업을 수행 할 수있는 방법이 정말로 필요합니다. – Ted

+0

다른 방법으로보기를 만들 수도 있고 다소 비슷하게 만들 수도 있습니다. – MartinElvar

관련 문제