Get excerpt for regular topics

안녕하세요, 저도 같은 문제를 겪었고, 필요한 데이터를 얻기 위해 다시 토픽을 가져오는 방식으로 해결했습니다. topic-list-item.js 컴포넌트에서 Ember.PromiseProxyMixin을 사용하여 이렇게 했습니다. 사용 방법은 여기서 확인하세요: Use Ember.PromiseProxyMixin in a theme

코드는 다음과 같이 보입니다:

// 요청 횟수를 줄이기 위해 커스텀 memoize 함수를 사용했습니다
const getTopic = memoize(id => ajax(`/t/${id}.json`).then(data => data));
// ...
// 컴포넌트 내부

  @discourseComputed("topic")
  topicPromise(topic) {
    return getTopic(topic.id);
  },

  @discourseComputed("topicPromise")
  topicProxy() {
    const promise = this.get("topicPromise");
    return promise && PromiseObject.create({ promise });
  },

  postStream: reads("topicProxy.content.post_stream"),

  @discourseComputed("postStream")
  excerpt(postStream) {
    if (!this.get("postStream")) return false;
    return `${stripHtml(postStream.posts[0].cooked).slice(0, 150)}...`;
  },

stripHtml은 첫 번째 게시글에서 HTML을 제거하기 위한 커스텀 함수입니다.

topic-list-item.hbs에는 다음과 같이 작성합니다.

  {{#if topicProxy.isFulfilled}}
    <div class="excerpt">
      {{#if excerpt}}
        {{html-safe excerpt}}
      {{/if}} 
    </div>
  {{/if}}