احصل على مقتطفات للمواضيع العادية

مرحباً، واجهتُ نفس المشكلة وتمكّنتُ من حلها عن طريق جلب الموضوع مرة أخرى للحصول على البيانات المطلوبة. قمت بذلك في مكون 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}}