Hallo, ich hatte das gleiche Problem und habe es gelöst, indem ich das Thema erneut abgerufen habe, um die benötigten Daten zu erhalten. Ich habe dies in der Komponente topic-list-item.js mit Ember.PromiseProxyMixin umgesetzt. Wie man es verwendet, findest du hier: Use Ember.PromiseProxyMixin in a theme
Der Code sieht ungefähr so aus:
// Ich habe eine benutzerdefinierte memoize-Funktion verwendet, um die Anzahl der Anfragen zu reduzieren
const getTopic = memoize(id => ajax(`/t/${id}.json`).then(data => data));
// ...
// Innerhalb der Komponente
@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 ist eine benutzerdefinierte Funktion, um HTML aus dem ersten Beitrag zu entfernen.
In topic-list-item.hbs würdest du Folgendes haben:
{{#if topicProxy.isFulfilled}}
<div class="excerpt">
{{#if excerpt}}
{{html-safe excerpt}}
{{/if}}
</div>
{{/if}}