Ich bin neu in Ember und es verwirrt mich über den Unterschied zwischen this.get()
und Ember.get()
. Kann jemand sie kurz erklären?Unterschied zwischen Ember.get() und this.get()
Antwort
Welcome to Ember ;-)
jedes Objekt, das Ember Observable mixin erstreckt unterstützt die get()
Methode (unter anderem).
Wenn Sie this.get()
aufrufen, müssen die this
auf ein solches Objekt beziehen (Route, Controller, Component, Ihre eigene Klasse, die Ember.Object und so weiter erstreckt). Der Aufruf von get()
für ein einfaches Objekt würde einen Fehler verursachen. Lassen Sie mich den Unterschied zeigen:
const emberObjectInstance = Ember.Object.create({
name: 'Bala'
});
emberObjectInstance.get('name'); // returns 'Bala'
const plainObject = { name: 'Bala'};
plainObject.get('name'); // causes a failure since get() is not a function
jedoch mit Ember.get()
Erfolge in beiden Fällen:
Ember.get(emberObjectInstance, 'name'); // returns 'Bala'
Ember.get(plainObject, 'name'); // returns 'Bala', too
Hinweis: get berechnet (in den häufigsten Fällen nicht zu vergessen, ruft entweder von get()
berechneten Eigenschaft macht Ich möchte jetzt nicht tief tauchen - lazy computation, volatile extensions etc.), Aber um den Unterschied zu verstehen, können wir mit einfachen Werten arbeiten.
Aus eigener Erfahrung verwende ich Ember.get()
überall, wo ich weiß, ein einfaches Objekt könnte das Objekt sein, dessen Eigenschaft ich abrufen muss. Ein schönes Beispiel ist setupController()
Haken, in den ich glattes Objekt von meinen Einheitstests übergeben kann, um die Funktionalität von setupController()
zu prüfen.
// some route:
setupController(controller, model){
this._super(...arguments);
const name = Ember.get(model, 'name'); // ***
controller.set('isNamePresentOnSetup', Ember.isPresent(name));
}
// in my unit tests I can use plain object:
...
const modelMock = {name: 'Bala'}; // plain object is enough because I use Ember.get instead of model.get() (see ***)?
const controllerMock = Ember.Object.create(); // has to be Ember.Object since I use controller.set() within setupController()
subject.setupController(controllerMock, modelMock);
assert.ok(controllerMock.get('isNamePresentOnSetup'), "property 'isNamePresentOnSetup' set up correctly if model name is present");
...
konnte ich auch Benutzer Ember.set(controller, 'isNamePresentOnSetup', Ember.isPresent(name))
und dann Mock Ebene Controller in setupController()
passieren, auch.
Ich denke, das ist ein guter Anfang, da Sie neu in Ember sind und ich bin mir sicher, dass Ember-Gurus viel mehr hinzuzufügen hätten. Relevante Ember docs:
https://guides.emberjs.com/v2.9.0/object-model/
https://guides.emberjs.com/v2.9.0/object-model/computed-properties/
https://guides.emberjs.com/v2.9.0/object-model/reopening-classes-and-instances/
Es gibt keine ist. foo.get('bar')
entspricht Ember.get(foo, 'bar')
. Da foo.get
jedoch unter Ember.Object
definiert ist, können Sie nur .get()
auf Ember Objects aufrufen. Ember.get()
funktioniert bei allen Glut-Objekten. Auf Glimmobjekt Ember.get(foo, 'bar')
entspricht foo.get('bar')
, auf jedem anderen Objekt entspricht es foo['bar']
.
Vielen Dank für Ihre Antwort :) –
- 1. Unterschied zwischen Vorzeichen & und *?
- 2. VBA: Unterschied zwischen & und +
- 3. Unterschied zwischen "**/* /" und "** /"?
- 4. Unterschied zwischen $ # und $ {# @}
- 5. Unterschied zwischen = und: =
- 6. Unterschied zwischen {!! !!} und {{}}
- 7. Unterschied zwischen '#', '%' und '$'
- 8. MySQL: Unterschied zwischen ', `,' und '
- 9. C++ Unterschied zwischen '//' und '///'
- 10. Unterschied zwischen String.Empty und ""
- 11. Unterschied zwischen „und"
- 12. Unterschied zwischen `% in%` und `==`
- 13. Unterschied zwischen numpy.logical_and und &
- 14. Unterschied zwischen. und #
- 15. Unterschied zwischen // und http: //
- 16. this.propertyName VS this.get ('propertyName') in einer Ember-Komponente
- 17. Unterschied zwischen -Wconversion zwischen gcc und g ++
- 18. Unterschied zwischen Wörterbuch und Hashtable
- 19. Unterschied zwischen FetchMode und FetchType
- 20. Unterschied zwischen Application_Start und Application_OnStart
- 21. Unterschied zwischen Uint8Array und Uint8ClampedArray
- 22. Unterschied zwischen BOOST_CHECK_CLOSE und BOOST_CHECK_CLOSE_FRACTION?
- 23. Unterschied zwischen Suche und Index
- 24. Unterschied zwischen AJAX und Senden
- 25. Unterschied zwischen Spekulation und Vorhersage
- 26. Unterschied zwischen inproc und outproc
- 27. Unterschied zwischen Clojure und Clojurescript?
- 28. Unterschied zwischen NSArray und NSMutableArray
- 29. Unterschied zwischen libcurl und libsoup
- 30. Unterschied zwischen DirectoryCatalog und AssemblyCatalog
Danke für die Erklärung in Kürze. –
Ich denke, es ist ein Fehler in der Erklärung. In "const modelMock = {name: 'Bala'}; // einfaches Objekt ist genug, weil ich Ember.set anstelle von model.set() verwende, siehst du?" Es ist eigentlich Ember.get() ryt? –
Sie sind richtig, thx! – Pavol