Ich habe mich etwas mit der Plugin-Entwicklung beschäftigt und festgestellt, dass in Fällen wie dem Discourse-Translator nach dem Abrufen eines Widget-Modells über findAncestorModel() geprüft wird, ob das Ergebnis existiert, bevor weitergemacht wird. Das sehe ich auch im Quellcode, Beispiel:
_getTopicUrl() {
const post = this.findAncestorModel();
return post ? post.get("topic.url") : null;
},
Aber es gibt auch Fälle, in denen nicht auf die Existenz des Vorfahrenmodells geprüft wird, ein paar Zeilen weiter unten:
const post = this.findAncestorModel();
const controller = this.register.lookup("controller:topic");
return post
.get("topic.postStream")
.filterUpwards(this.attrs.id)
.then(() => {
controller.updateQueryParams();
});
Wie zuverlässig ist das Vorhandensein des Ergebnisses von findAncestorModel? Hängt das vom jeweiligen Widget ab, oder ist es gute Praxis, immer mit einer Null-Antwort umzugehen, selbst in Situationen, in denen dies sehr unwahrscheinlich erscheint, wie etwa im Post-Menü?