2016-03-21 8 views
0

エンバールックアッププロパティは、カスタムコンポーネント内から

this.get('targetObject') 

my-panel.js)私はmy-panel

としてカスタムコンポーネントを持っており、バッキングJSで言うまた、私は/別のカスタムコンポーネントからこのコンポーネントを使用して参照するには、my-sections.hbsを言います

{{my-panel}} 

として私の質問は私が行うときである

this.get('targetObject') //Called inside my-panel.js 

どのようにしてプロパティーを参照しますかtargetObject?チェーンの外観はどうですか?

答えて

0

これは、バッキングカスタムコンポーネントjs(おそらく)の範囲内で検索します。

実際にチェーン/スコープはthisオブジェクトから始まります。したがって、thisがそのスコープにあるかどうかにかかわらず、それは実際にそれを探している場所です。別のオブジェクトへの参照があった場合、またはコールバック関数内にあった場合、my文は真ではないかもしれません。

App.MyCompComponent = Ember.Component.extend({ 
    foo: 'bar', 
    actions: { 
    doit: function(){ 
     // `this` is the scope of an instance of this component. 
     alert(this.get('foo')); 
    } 
    } 
}); 

http://emberjs.jsbin.com/totibidohe/edit?html,js,output

あなたにもテンプレートであることの範囲外でそれを考えると、単にインスタンスと、それは同じだろうとインスタンスと参照を作成することができます。

var MyCompComponent = Ember.Component.extend({ 
    foo: 'bar', 
    actions: { 
    doit: function(){ 
     alert(this.get('foo')); 
    } 
    } 
}); 

var j = MyCompComponent.create(); 

alert(j.get('foo')); 

http://emberjs.jsbin.com/xekohoguto/1/edit?html,js,output

+0

おかげで...しかし、私だけではなく、同じコンポーネント(テンプレート/ JS)内の範囲にはrefereringています...私は、コンポーネントA内のコードが呼び出されたときに、スコープチェーンを知りたいと思いました。コンポーネントBがコンポーネントAを使用していると仮定します。 私のオリジナルの質問には、私がここで言うことの具体例があります。 – testndtv

+0

私の答えはあなたの質問に基づいて同じままですが、それはあなたが不思議に思っている場合は、親スコープのプロパティを探しに行くことはありません。コンポーネントは、親と子の両方のスコープから分離されています。 – Kingpin2k

+0

「my-panel」の中で定義されていないmy-sections.js(呼び出し元のコンポーネント) – testndtv

関連する問題