2017-04-07 1 views
0

「get」メソッドについても同じことが当てはまります。 get(this, 'agentName')およびthis.get('agentName')のように同じ値を返します。Emberのset(this、 'agentName'、 'John')とthis.set( 'agentName'、 'John')の違いは何ですか?

公式ember doc for get methodでは、取得する値が2つあると想定されています。次に、this.get('agentName')はどのように正確に動作しますか?

+1

[Ember.get()とthis.get()の相違点の可能性があります(http://stackoverflow.com/questions/40606827/difference-間にember-get-and-this-get) – locks

答えて

3

this.get(...)Ember.get(this,...)のショートカットです。しかし、これはemberオブジェクト上でのみ利用可能であるため、Ember.getだけがプレーンjsオブジェクトで動作します。

this.get(...) implementationをご覧ください。

2

Emberのゲッターとセッターが、unknown propertycomputed propertyobserversを処理するようにアップグレードされました。多くの人がsetUnknownProperty()フックを使用するか、またはgetとsetを使用してunknownProperty()フックを使用する人はほとんどいませんが、ほとんどの人のコードではプロパティとオブザーバが計算されます。 computed propertiesobserversの詳細

したがって、set()this.set()の基本的な違いは、お使いの機能のコンテキストと関係があります。 set()を呼び出すと、そのスコープ内で定義されていなければなりません。 Howeve、this.set()のスコープはです。です。関数を呼び出す場所に応じて、スコープが変わります。たとえば、のコンポーネントの場合、thisは、componentクラスそのものを指します。コントローラ、ルート、その他のオブジェクトの場合も同様です。独自のオブジェクトがあり、エバークラスを拡張していない場合、thisは他のJavaScriptコードと同様に動作します。 JavaScriptではデフォルトのgettersetterに戻ります。

get(this, 'foo')を呼び出すと、JavaScriptのゲッター関数が呼び出され、検索対象のプロパティを持つ現在のコンテキストが渡されます。 this.get('foo')と言うときは、上記のことを処理するEmber.Objectクラスからget()を呼び出しています。 @Luxがthis.get( 'foo')をEmber.get(this、 'foo')を呼び出すために簡略化していると述べました。

これが役に立ちます。私はEmber guidesAPI docsと読むことを勧めます。 Curent ember-cliとember-dataバージョンは@ 2.12.0です。

関連する問題