Der Getter und Setter in Ember wurde aktualisiert, um unknown property
, computed property
und observers
zu behandeln. Nicht viele Leute würden setUnknownProperty()
Hook oder den unknownProperty()
Hook mit get und set verwenden, aber es gibt berechnete Eigenschaften und Beobachter in den meisten Menschen Code. Mehr unter computed properties und observers. Der grundlegende Unterschied zwischen Ihrem set()
und this.set()
hat also mit dem Kontext Ihrer Funktion zu tun. Wenn Sie nur set() aufrufen, muss es in diesem Bereich definiert oder von irgendwoher importiert werden, um die Aufgaben zu erledigen. Howeve, mit this.set() ist der Bereich hier dieser. Je nachdem, wo Sie die Funktion aufrufen, ändert sich das Oszilloskop. Zum Beispiel, wenn Sie in einer Komponente sind, bezieht sich this
auf die component
Klasse selbst. Ähnliches gilt für Controller, Routen und andere Glutobjekte. Wenn Sie ein eigenes Objekt haben und es keine Ember-Klassen erweitert, dann funktioniert this
immer noch mit der Funktionsweise in jedem anderen JavaScript-Code. Es wird also in JavaScript auf getter und setter zurückgesetzt.
Wie Sie vielleicht schon bemerkt haben, wenn Sie get(this, 'foo')
aufrufen, rufen Sie die Getter-Funktion von JavaScript auf und übergeben sie den aktuellen Kontext mit der Eigenschaft, nach der gesucht werden soll. Und wenn Sie this.get('foo')
sagen, rufen Sie get()
von Ember.Object
Klasse, die die oben genannten Dinge behandeln kann. Und wie @Lux erwähnt this.get ('foo') ist vereinfacht Ember.get (this, 'foo') zu nennen.
Hoffe, das hilft. Ich ermutige zu lesen Ember guides und API docs. Curent glut-cli und glut-Daten Version @ 2.12.0
Mögliches Duplikat [Differenz zwischen Ember.get() und this.get()] (http://stackoverflow.com/questions/40606827/difference- zwischen-ember-get-and-this-get) – locks