ähnliche Frage hier:
Difference between Template.instance() and this
Das ist daran zu erkennen ist, dass:
in der Vorlage Lebenszyklus-Funktionen (OnCreated, onRendered ...) this
zu Template.instance()
gleich so this.data
ist das gleiche wie Template.instance().data
zu dieser Zeit!
In einem Helfer oder Ereignis ist this
der aktuelle Datenkontext.
Also, beachten Sie eine wichtige Sache hier: den Datenkontext im Laufe der Zeit Ihre Daten, wenn Änderungen Upstream ändern können:
Wenn Sie Daten übergeben zu einer Vorlage wird die Vorlage mit den neuen Daten neu gerendert werden . Neue Daten = neuer Datenkontext.
Also, wenn Sie so etwas wie:
Template.example.onCreated(function() {
this.data.myKey = "my example data set on template creation"; //WRONG!
// or equivalently:
Template.instance().data.myOtherKey = "another key"; //WRONG!
})
gut, diese Daten unter this
sein können (das heißt der Datenkontext) in Ihrem Helfer (this.myKey
), aber nur solange die Upstream-Daten nicht ändern.
Sobald sich die Upstream-Daten ändern, wird this
der neue Datenkontext sein und Ihre hinzugefügten Daten NICHT enthalten.
So in der Zusammenfassung:
Wenn Sie Kontext zu Ihrer Vorlage in onCreated
oder onRendered
hinzufügen müssen, stellen Sie sicher, dass Sie es auf den aktuellen Datenkontext nicht binden, sondern an die Vorlage.Beispiel()
Sie tun sollten:
Template.example.onCreated(function() {
this.myKey = "my example data set on template creation";
// or equivalently:
Template.instance().myOtherKey = "another key";
})
und Sie diese Daten in Helfer und Veranstaltungen über
Template.instance().myKey
'Template.instance' ist (im Moment) nur dann sinnvoll zugreifen in Helfern. An anderen Stellen (wie dem 'erstellten' Callback, dem 'gerenderten' Callback, etc.) können Sie die Template-Instanz auf andere Weise erhalten, aber in diesen Fällen können Sie 'Template.instance' auch verwenden, wenn Sie bevorzugen. –
Wie ich in meiner Antwort unten geschrieben habe, können Sie, während Sie auf diese Weise auf Template.instance() .daten zugreifen können, keine eigenen Daten in diesen Kontext einfügen, sonst besteht die Gefahr, dass sie beim nächsten Render der Vorlage verschwinden. – MrE