2017-04-07 2 views
0

Das gleiche gilt auch für "Get" -Methoden. Wie get(this, 'agentName') und this.get('agentName') gibt den gleichen Wert zurück.Was ist der Unterschied zwischen set (this, 'agentName', 'John') und this.set ('agentName', 'John') in Ember?

Im offiziellen ember doc for get method, zeigt es, dass wir zwei Werte passieren sollen zu erhalten. Wie funktioniert this.get('agentName') genau?

+1

Mögliches Duplikat [Differenz zwischen Ember.get() und this.get()] (http://stackoverflow.com/questions/40606827/difference- zwischen-ember-get-and-this-get) – locks

Antwort

3

this.get(...) ist eine Abkürzung für Ember.get(this,...). Es ist jedoch nur für Glutobjekte verfügbar, sodass nur in einfachen js-Objekten funktioniert.

Werfen Sie einen Blick auf this.get(...) implementation.

2

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

Verwandte Themen